rsyncを使用してサブディレクトリの内容のコピーをスキップします。

rsyncを使用してサブディレクトリの内容のコピーをスキップします。
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

説明する

  • -frsyncフィルタリングルールが有効になります。
  • - /*/*/:
    • -除外された規則を意味します。
    • /*/*/レベルからすべてのサブディレクトリを除外します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

関連情報