#recycle
rsync를 사용하여 이 디렉터리를 제외 하려고 합니다 .
$ rsync -Hauv -h -P --exclude '#recycle/' --exclude @eaDir/ --exclude '.DS_Store*' --exclude desktop.ini user1@src_server:/volume2/Extension_1 /destination/dir/
receiving incremental file list
Extension_1/#recycle/subDir1/subDir2/
Extension_1/#recycle/subDir1/subDir2/BigVideo.mov
39.23G 82% 36.40MB/s 0:03:44 ^C
$
(나도 옵션을 인용 .DS_Store*
하고 제거하려고 시도했지만 --log-file
아무런 차이가 없었습니다.)
CentOS 7.9 버전을 사용하고 있습니다 rsync
.3.1.2 protocol version 31
bash
4.2.46(2)-release
좀 더 구체적으로 말하자면, 제외 목록이 포함된 변수가 포함된 아주 작은 스크립트를 작성했습니다.
$ rsyncExclusionOptions=$(printf -- "--exclude %s " "'#recycle/'" @eaDir/ "'.DS_Store*'" desktop.ini)
$ echo $rsyncExclusionOptions
--exclude '*/#recycle/' --exclude @eaDir/ --exclude '.DS_Store*' --exclude desktop.ini
$ rsync -Hauv -h -P --skip-compress=$rsyncSkipCompressList $rsyncExclusionOptions user1@src_server:/volume2/Extension_1 /destination/dir/
receiving incremental file list
Extension_1/#recycle/SERIES/mySerie/SOURCES_HD59iDF/EPISODES_666-709/
Extension_1/#recycle/SERIES/mySerie/SOURCES_HD59iDF/EPISODES_666-709/TOEI_myEpisode.mov
3.22G 5% 104.35MB/s 0:08:23 ^CKilled by signal 2.
rsync error: unexplained error (code 255) at rsync.c(638) [generator=3.1.2]
rsync: [generator] write error: Broken pipe (32)
rsync error: received SIGUSR1 (code 19) at main.c(1430) [receiver=3.1.2]
EDIT0: @roaima 또한 괄호 사이에 넣어 보았습니다 #
(제공한 링크에서 제안한 대로).여기) 하지만 다음 중 하나도 작동하지 않습니다.
$ rsyncExclusionOptions=$(printf -- "--exclude %s " "'[#]recycle/'" @eaDir/ "'.DS_Store*'" desktop.ini)
$ echo $rsyncExclusionOptions
--exclude '[#]recycle/' --exclude @eaDir/ --exclude '.DS_Store*' --exclude desktop.ini
$ rsync -Hauv -h -P --skip-compress=$rsyncSkipCompressList $rsyncExclusionOptions user1@src_server:/volume2/Extension_1 /destination/dir/
receiving incremental file list
Extension_1/#recycle/SERIES/mySerie/SOURCES_HD59iDF/EPISODES_666-709/
Extension_1/#recycle/SERIES/mySerie/SOURCES_HD59iDF/EPISODES_666-709/TOEI_myEpisode.mov
4.04G 7% 21.67MB/s 0:39:45 ^CKilled by signal 2.
rsync error: unexplained error (code 255) at rsync.c(638) [generator=3.1.2]
rsync: [generator] write error: Broken pipe (32)
rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at io.c(504) [receiver=3.1.2]
rsync: [receiver] write error: Broken pipe (32)
가능한 해결책:
- 해시 값은 다음과 같이 괄호 사이에 배치되어야 합니다.
[#]
AND '
변수[#]recycle
내부의 제외 에는 extra를 사용할 수 없습니다rsyncExclusionOptions
.
$ rsyncExclusionOptions=$(printf -- "--exclude %s " "[#]recycle/" @eaDir/ "'.DS_Store*'" desktop.ini)
$ echo $rsyncExclusionOptions
--exclude [#]recycle/ --exclude @eaDir/ --exclude '.DS_Store*' --exclude desktop.ini
$ rsync -Hauv -h -P --skip-compress=$rsyncSkipCompressList $rsyncExclusionOptions user1@src_server:/volume2/Extension_1 /destination/dir/
receiving incremental file list
Extension_1/SERIES/mySerie/SOURCES_VF/EPISODES_700-765/
답변1
rsync
버전 3.1.3 프로토콜 31에서는 원래 설명된 문제를 재현할 수 없다는 말로 이 질문에 대답하겠습니다 . (Raspbian GNU/Linux 10 "차단기".)
수정된 질문은 제외 목록이 올바르지 않으며 디렉터리 이름과 일치하지 않음을 보여줍니다. 패턴 이름에 작은따옴표를 넣었지만 디렉터리/파일 이름과 일치하지 않습니다. 따라서 제외되지 않습니다.
원래 답변은 아래에 계속됩니다.
#
그러나 문제를 일으키는 파일 이름 과 함께 StackOverflow에 보고된 해결되지 않은 또 다른 인스턴스를 발견했습니다.rsync는 '#filename#' 파일 이름을 제외할 수 없습니다., 그래서 당신은 혼자가 아닙니다. 어쩌면 내가 실행 중인 최신 버전에서 문제가 해결되었을 수도 있습니다.
상상하다
mkdir -p /tmp/718113/Extension_1/#recycle/subDir1/subDir2
cd /tmp/718113
mkdir dst
touch Extension_1/#recycle/subDir1/subDir2/BigVideo.mov
지금 주문하세요
rsync -Hauv -h -P --exclude '#recycle/' --exclude '@eaDir/' --exclude '.DS_Store*' --exclude 'desktop.ini' localhost:/tmp/718113/Extension_1 /tmp/718113/dst
산출
receiving incremental file list
Extension_1/
sent 85 bytes received 78 bytes 326.00 bytes/sec
total size is 0 speedup is 0.00
유일한 중요한 변경 사항은 쉘이 패턴을 확장할 기회가 없도록 제외 패턴을 인용했다는 것입니다(구체적으로는 그러나 배타적이지는 않음 '.DS_Store*'
). 그러나 이 경우에도 문제가 발생하면 , rsync
등 의 오류 메시지 를 받게 됩니다 Unexpected remote arg: localhost:/tmp/718113/Extension_1
.rsync error: syntax or usage error (code 1) at main.c(1372) [sender=3.1.3]
--progress
또한 (묵시적 -P
)을 사용하지 않고 리디렉션하는 것이 좋습니다.표준 출력/표준 오류로그 파일에. 결과를 로그 파일에 기록하려면 다음 -P
으로 바꾸 --partial
거나 옵션을 사용하십시오 .--log