如何在使用aws s3 syn时排除多个文件夹?
我试过了:
# aws s3 sync s3://inksedge-app-file-storage-bucket-prod-env s3://inksedge-app-file-storage-bucket-test-env --exclude 'reportTemplate/* orders/* customers/*'
但它仍在同步文件夹"客户"
输出:
copy: s3://inksedge-app-file-storage-bucket-prod-env/customers/116/miniimages/IMG_4800.jpg to s3://inksedge-app-file-storage-bucket-test-env/customers/116/miniimages/IMG_4800.jpg
copy: s3://inksedge-app-file-storage-bucket-prod-env/customers/116/miniimages/DSC_0358.JPG to s3://inksedge-app-file-storage-bucket-test-env/customers/116/miniimages/DSC_0358.JPG
答案 0 :(得分:44)
最后这对我有用:
sudo aws s3 sync s3://xxxx-app-file-storage-bucket-prod-env s3://xxxx-app-file-storage-bucket-test-env --exclude 'customers/*' --exclude 'orders/*' --exclude 'reportTemplate/*'
提示:特别是您必须将通配符和特殊字符用单引号或双引号括起来才能正常工作,下面是匹配字符的示例。有关S3命令的更多信息,请在amazon here中查看。
*: Matches everything
?: Matches any single character
[sequence]: Matches any character in sequence
[!sequence]: Matches any character not in sequence
答案 1 :(得分:4)
对于那些希望同步存储桶中某些子文件夹的用户,排除过滤器适用于正在同步的文件夹内的文件和文件夹,而不适用于存储桶的路径,例如:
aws s3 sync s3://bucket1/bootstrap/ s3://bucket2/bootstrap --exclude '*' --include 'css/*'
将同步以下目录树中的文件夹bootstrap / css,但不同步bootstrap / js,也不同步bootstrap /字体:
bootstrap/
├── css/
│ ├── bootstrap.css
│ ├── bootstrap.min.css
│ ├── bootstrap-theme.css
│ └── bootstrap-theme.min.css
├── js/
│ ├── bootstrap.js
│ └── bootstrap.min.js
└── fonts/
├── glyphicons-halflings-regular.eot
├── glyphicons-halflings-regular.svg
├── glyphicons-halflings-regular.ttf
└── glyphicons-halflings-regular.woff
也就是说,过滤器是'css / *'而不是'bootstrap / css / *'
https://docs.aws.amazon.com/cli/latest/reference/s3/index.html#use-of-exclude-and-include-filters中的更多内容
答案 2 :(得分:0)
在Windows命令提示符下,仅双引号有效,因此在通配符周围使用“”,例如:
aws s3 sync s3://bucket-1/ . --exclude "reportTemplate/*" --exclude "orders/*"
在Windows 10上单引号不起作用(与--dryrun选项一起测试)。
答案 3 :(得分:0)
当我们有多级文件夹结构时,我使用了一些不同的方法。将“**”与 --include 一起使用
命令:
aws s3 同步 s3://$SOURCE_BUCKET/dir1/dir2/ s3://$TARGET_BUCKET/dir1/dir2/ --include "**/**'