用例是我想要将某些数据排除在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
的文件仍会上传。
答案 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