我有一个在 Digital Ocean 服务器上运行的应用程序,并且有两个文件夹正在使用用户上传的图像进行更新。
是否可以将新上传的内容从服务器文件夹自动传输到 S3 存储桶。
我已经在 ubuntu 服务器上配置了 AWS CLI。
谢谢
答案1
您也可以尝试Minio 客户端又名 mc,它具有开源和与 S3 兼容的 API。您可以使用mc mirror
命令来存档目录。
安装 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”的存储桶。第二个命令按名称将本地目录镜像到 S3 存储桶。这可以轻松设置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.
希望能帮助到你。
免责声明:我为米尼奥
答案2
在我看来,这里没有完美的解决方案,但您可以尝试以下两种解决方法:
- 在您的服务器上安装一个 Bucket 作为文件存储系统,使用S3FS或者类似https://github.com/s3fs-fuse/s3fs-fuse。
- 日程s3命令sync 将您的文件夹与 S3 存储桶同步。http://s3tools.org/s3cmd-sync。
其工作原理类似于 rsync。
对于您的 Web 应用程序来说,更好的实现方法是直接上传和检索到 S3 存储桶。S3 专为此用途而设计,并提供了基于表单的验证等不错的技巧。