我想使用AWS S3 cli将完整的目录结构复制到S3存储桶。
到目前为止,我试过的所有东西都将文件复制到存储桶中,但是目录结构已折叠。 (换句话说,每个文件都被复制到存储桶的根目录中)
我使用的命令是:
aws s3 cp --recursive ./logdata/ s3://bucketname/
我也试过在我的源代码(即参数副本)上留下尾部的斜线。 我也使用通配符来指定所有文件…我尝试的每件事情只是将日志文件复制到存储桶的根目录中。
我相信同步是你想要的方法。 试试这个:
aws s3 sync ./logdata s3://bucketname/
我在使用这些命令时遇到了这个错误。
$ aws s3 cp --recursive /local/dir s3://s3bucket/ OR $ aws s3 sync /local/dir s3://s3bucket/
我甚至想到在本地安装S3存储桶,然后运行rsync,甚至失败(或挂了几个小时),因为我有成千上万的文件。
最后, s3cmd的工作就像一个魅力。
s3cmd sync /local/dir/ --delete-removed s3://s3bucket/ --exclude="some_file" --exclude="*directory*" --progress --no-preserve
这不仅可以很好地完成这个工作,而且在控制台上显示出相当详细的输出结果,而且还可以部分上传大文件。
使用以下脚本来复制文件夹结构:
s3Folder="s3://xyz.abc.com/asdf"; for entry in "$asset_directory"* do echo "Processing - $entry" if [[ -d $entry ]]; then echo "directory" aws s3 cp --recursive "./$entry" "$s3Folder/$entry/" else echo "file" aws s3 cp "./$entry" "$s3Folder/" fi done
另外,你也可以尝试迷你客户端又名MC
$ mc cp Desktop/test/test/test.txt s3/miniocloud/Desktop/test/test/
希望它有帮助。
PS:我是这个项目的贡献者之一。