rsync サブディレクトリとコンテンツのみ

rsync サブディレクトリとコンテンツのみ

多くのファイルとサブディレクトリを持つディレクトリがあります。以下を参照してください。

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

関連情報