上記のように
たとえば、説明するのが最善だと思います。
/mnt/source/source-folder
-> sfolder1
-> sfolder2
-> sfolder3
-> sfolder4
「sfolder」には、数十のフォルダとその中に何百ものファイルが含まれています。
「sfolder2とその内容」を/mnt/destination/destination-folderにコピーしたいと思います。
頑張った
rsync -nriv --stats --include "sfolder2" --exclude "*" /mnt/source/source-folder/ /mnt/destination/destination-folder/
rsync -nriv --stats --include "sfolder2*" --exclude "*" /mnt/source/source-folder/ /mnt/destination/destination-folder/
rsync -nriv --stats --include "*sfolder2*" --exclude "*" /mnt/source/source-folder/ /mnt/destination/destination-folder/
すべての場合において、統計レポートは「sfolder2」フォルダのみを送信し、「sfolder2」内の数十のフォルダと数百のファイルは無視されます。
私は何が間違っていましたか?
私の実際の目標は、ソースからターゲットに複数のフォルダ(上記のフォルダ設定、sfolder2、sfolder4など)をコピーすることです。現在テストするときは、フォルダを1つだけ使用してください。
ありがとうございます!
ベストアンサー1
「すべての場所」を除き、*
転送ルートのsfolder2
ファイルまたはディレクトリのみを転送するために含めました。sfolder2
代わりに、/*
ソースディレクトリに関連するファイルのみを除外できます。つまり/sfolder3
、たとえば除外されると/sfolder3
親ディレクトリが除外されるため、内部のすべてのファイルも除外されます。
Useを使用すると、/sfolder2/
そのディレクトリがソースディレクトリ(/
最初に)に相対的であり、ディレクトリ(/
最後にある)であることが明らかになります。また、-r
(-a
アーカイブモード)を次に置き換えました-r
。
rsync -naiv --stats --include='/sfolder2/' --exclude='/*' \
/mnt/source/source-folder/ /mnt/destination/destination-folder/
sfolder2
以下を含みますsfolder4
。
rsync -naiv --stats --include='/sfolder2/' --include='/sfolder4/' --exclude='/*' \
/mnt/source/source-folder/ /mnt/destination/destination-folder/