많은 파일과 하위 디렉터리가 있는 디렉터리가 있습니다. 아래를 참조하세요:
baseDir
bad1
bad2
subDir1
file1
subDir2
file1
rsync bad1 및 bad2 없이 baseDir의 내용을 rsync하고 싶습니다.
~로 이어지다
targetDir
SubDir1
file1
SubDir2
file1
두 개의 명령이 필요한지는 상관하지 않습니다. 그런데 어떻게 해야 합니까?
답변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