自动将 Ubuntu 服务器上的文件夹与 Amazon S3 存储桶同步

自动将 Ubuntu 服务器上的文件夹与 Amazon S3 存储桶同步

我有一个在 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

在我看来,这里没有完美的解决方案,但您可以尝试以下两种解决方法:

其工作原理类似于 rsync。

对于您的 Web 应用程序来说,更好的实现方法是直接上传和检索到 S3 存储桶。S3 专为此用途而设计,并提供了基于表单的验证等不错的技巧。

相关内容