rsync -avzm -e ssh /path/to/src/folder/ /path/to/dest/folder
--include=*/ --include=*/config.xml --exclude=*
セカンダリディレクトリにファイル(config.xmlなど)をコピーするには、rsyncを使用する必要があります。私は現在上記のスクリプトを使用しており、すべてのディレクトリレベルでconfig.xmlをコピーしています。
上記のコマンドをどのように変更する必要がありますか?
答え1
この試み:
rsync -avzm -e ssh -f'- /*/*/' -f'+ config.xml' \
/path/to/src/folder/ /path/to/dest/folder
説明する
-f
rsync
フィルタリングルールが有効になります。- /*/*/
:-
除外された規則を意味します。/*/*/
レベルからすべてのサブディレクトリを除外します3rd
。
+ config.xml
:rsyncがファイル名に含まれるすべてのファイルを+
コピーすることを可能にするインクルードルールを意味します。config.xml
はい
$ ls -R dir1/
dir1/:
dir2 dir22
dir1/dir2:
config.xml.2 dir3
dir1/dir2/dir3:
config.xml
dir1/dir22:
config.xml.22 dir33
dir1/dir22/dir33:
config.xml
$ rsync -r -f'- /*/*/' -f'+ config.xml' dir1/ /tmp
$ ls -R /tmp/dir2*
/tmp/dir2:
config.xml.2
/tmp/dir22:
config.xml.22