如何说服AWS CLI同步以排除与目录模式匹配的任何文件?

时间:2017-07-07 21:22:05

标签: amazon-s3 wildcard aws-cli

用例是我想要将某些数据排除在S3之外。文件可以在文件层次结构中的任何位置,但如果它们包含在名为foobar的目录下的任何位置,我不希望它们被复制。

例如:

/my-data/20150806-1600/foobar/blah.csv  # Exclude
/my-data/20150806-1600/dingbat/blah.csv # Include
/my-data/clients/foobar/README.txt      # Exclude

$ /usr/local/bin/aws --version
aws-cli/1.11.117 Python/2.7.6 Linux/3.13.0-92-generic botocore/1.5.80

唉...

/usr/local/bin/aws s3 sync /my-data/ s3://my-bucket/my-data/ --exclude '*/foobar/*' --exclude '*/foobaz/*' --delete

文件仍然上传。我尝试将排除模式更改为foobar/**foobar*,但在每种情况下,路径中与父目录匹配且文件foobar的文件仍会上传。

1 个答案:

答案 0 :(得分:0)

对我来说,似乎只能排除*foobar**foorbar/*。通过排除*/foobar/*

工作
$ ls -lR stack
total 8
drwxr-xr-x  3 user  wheel  102  8 Jul 23:25 foobar
-rw-r--r--  1 user  wheel    5  8 Jul 23:25 level1

stack/foobar:
total 8
-rw-r--r--  1 user  wheel  5  8 Jul 23:25 level2

$ aws s3 sync stack/ s3://my-bucket --exclude '*foobar*'
upload: stack/level1 to s3://my-bucket/level1