Digital Oceanサーバーで実行しているアプリがあり、ユーザーがアップロードした画像で更新されている2つのフォルダーがあります。
新しいアップロードをサーバーフォルダーからs3バケットに自動的に転送することは可能ですか?.
UbuntuサーバーでAWS CLIをすでに設定しています。
ありがとう
また、オープンソースでS3互換のAPIである Minio client aka mc を試すこともできます。 mc mirror
commandを使用して同じものをアーカイブできます。
Minioクライアントのインストール
$ wget https://dl.minio.io/client/mc/release/linux-AMD64/mc
$ chmod 755 mc
$ ./mc --help
Amazon S3用にmcを構成する
$ ./mc config Host add <ALIAS> <YOUR-S3-ENDPOINT> <YOUR-ACCESS-KEY> <YOUR-SECRET-KEY>
例
$ ./mc config Host add mys3 https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12
ローカルフォルダーをAWS S3にコピーする
$ ./mc mb mys3/mys3baucket
$ ./mc mirror mylocaldir/ mys3/mys3baucket
最初のコマンドでバケット名「mys3baucket」を作成しました2番目のコマンドでローカルディレクトリをS3バケット「mys3baucket」にミラーリングしました
これはcronで設定でき、定期的なミラーリングがすべて設定されています。
mc
は次のコマンドを実装します
ls List files and folders.
mb Make a bucket or folder.
cat Display contents of a file.
pipe Write contents of stdin to one or more targets. When no target is specified, it writes to stdout.
share Generate URL for sharing.
cp Copy one or more objects to a target.
mirror Mirror folders recursively from a single source to many destinations.
diff Compute differences between two folders.
rm Remove file or bucket [WARNING: Use with care].
access Manage bucket access permissions.
session Manage saved sessions of cp and mirror operations.
config Manage configuration file.
update Check for a new software update.
version Print version.
それが役に立てば幸い。免責事項:私は Minio のために働きます
私の見解では、ここでは完璧な解決策はありませんが、次の2つの回避策を試すことができます。
これは一種のrsyncのように機能します。
Webアプリケーションのより良い実装は、直接S3バケットにアップロードして取得することです。 S3は、この使用のために特別に設計されており、フォームベースの検証のような素晴らしいトリックを提供します。