多くのファイルとサブディレクトリを持つディレクトリがあります。以下を参照してください。
baseDir
bad1
bad2
subDir1
file1
subDir2
file1
rsync bad1とbad2なしでbaseDirの内容をrsyncしたいと思います。
~につながる
targetDir
SubDir1
file1
SubDir2
file1
2つのコマンドが必要かどうかは関係ありません。しかし、どうすればいいですか?
答え1
必要なディレクトリとその親ディレクトリを含め、他のすべてのディレクトリを除外したり、間違ったディレクトリを除外したりできます。順序が重要であることに注意してください。 rsyncは、一致するパターンの最初のファイルで何をするかを決定します(たとえば、それ以降のファイルは事実上--exclude=*
無視されます)。また、ディレクトリを除外すると、そのディレクトリがコピーされるのを防ぐだけでなく、ナビゲーションも防止されるため、その下にあるすべての項目が効果的に除外されます。バラよりこのrsyncフィルタ入門書より多くの情報を知りたいです。
rsync --include='/' --include='/subDir***' --exclude='*' baseDir/ targetDir/
rsync --exclude='/bad*' baseDir/ targetDir/
答え2
--exclude-from
オプションを使用して、rsync
同期に含めない項目を定義できます。
たとえば、
#cat exclude.txt
baseDir/bad1
baseDir/bad2
#rsync --exclude-from=exclude.txt -avr source_dir_path destination_dir_path
答え3
rsync
オプションの引数としてワイルドカードを使用するので、--exclude
次のことができます。
$ pwd
$ /some/dir
$ rsync -avz baseDir/ --exclude 'bad[1,2]' targetDir/.
たとえば、
$ rsync -avz baseDir/ --exclude 'bad[1,2]' targetDir/.
sending incremental file list
./
subDir1/
subDir1/file1
subDir2/
subDir2/file1
sent 185 bytes received 61 bytes 492.00 bytes/sec
total size is 0 speedup is 0.00