web-dev-qa-db-ja.com

EC2インスタンスで「aws s3 sync」を使用しようとしています。 「--exclude」オプションは壊れていますか?

EC2インスタンスにプリインストールされているAmazonの公式ツールを使用して、EC2インスタンスをS3にバックアップしようとしています。同期からディレクトリを除外する同期コマンドを取得するのが困難です。 documentation を使用すると、「-exclude」オプションを使用すると簡単に聞こえます。しかし、私はそれを動作させることができませんでした。

私はyumから入手できる最新バージョンを実行しています:

[root@HOSTNAME ~]# aws --version
aws-cli/1.1.1 Python/2.6.8 Linux/3.4.57-48.42.amzn1.x86_64

これは私が問題を抱えているコマンドです:

aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '*.git/*'

「.git」という名前のすべてのフォルダーとそれらのフォルダー内のすべてのファイルを同期から除外したい。

documentation から判断すると、「-exclude」に指定したパターンは機能するはずです。ただし、.gitディレクトリ全体とそのすべてのファイルは引き続き同期されます。以下は出力の例です。

upload: ../var/www/site/.git/objects/7b/e3cdf203d34a0d7eff30a96a78d20eacee8d77 to s3://backup-bucket/var/www/site/.git/objects/7b/e3cdf203d34a0d7eff30a96a78d20eacee8d77

次のコマンドを試しましたが、すべて「.git」という名前のフォルダを除外できませんでした。

aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude *.git/*
aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude */.git/*
aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '.git'
aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '*\.git/*'
aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '.*\.git/.*'

そして、おそらく最も厄介なことに、このコマンドは同期から何も除外しません。

aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '*'

実際、「-exclude」は、グロビングが絶対パスの右側にある場合にのみ機能するようです。たとえば、これは/var/www/site/.gitにある.gitフォルダーを除外します。

aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '/var/www/site/.git/*'

しかし、これは何も除外しません:

aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '*/www/site/.git/*'

/ var/wwwに多くのサイトがあり、「。git」、「parsed」、「cache」など、同期から除外したい多くのフォルダーがあります。それらすべてに絶対パスを指定するのは大変です。

ここで私が間違っている単純なことがあるといいのですが。ご協力ありがとうございます。

8
user158845

私にとっても壊れています-そして、これについては未解決の問題があります https://github.com/aws/aws-cli/issues/434 。バグです。

4
Charles

上記の githubの問題 はクローズされ、syncコマンドは今すぐ除外できます

私は試しました--exclude ".git/*"機能します。

末尾の/* 必要とされている。

2
Luciano