Rsync 除外の問題

Rsync 除外の問題

類似したサブフォルダ構造を持つディレクトリが大量にあります。各ディレクトリにはサブディレクトリ「s」があります。一部のディレクトリの名前には「_tmp」というプレフィックスが付いています。

私が望んでいるのは、すべてのメイン ディレクトリを新しいサーバーにコピーし、s-subdirs と _tmp -dirst を転送から除外することです。

OSX (rsync v. 2.6.9) では、このコマンドは正常に動作します:

rsync -avz --exclude */s/* --exclude *_tmp SOURCE/ DEST/

しかし、Ubuntu (rsync v. 3.0.7) では同じコマンドが失敗し、_tmp は削除されますが、s フォルダーはまだ残ります。回避策はありますか?

答え1

何を実行しているかを確認するには、コマンドの先頭に を追加してくださいecho

echo rsync -avz --exclude */s/* --exclude *_tmp SOURCE/ DEST/

シェル、シェルの設定、および現在のディレクトリの内容に応じて、引用符で囲まれていない*_tmp部分が特定のファイルに展開される場合があります (除外したいファイルのほとんどにはおそらく一致しません)。 は、echo実際に何が起こっているかを示します。

シェルの拡張を防ぐために、アスタリスクを引用符で保護する必要があります。

rsync -avz --exclude '*/s/*' --exclude '*_tmp' SOURCE/ DEST/

関連情報