SSH를 통해 rsync를 사용하여 특정 파일을 복사 할 수 없습니다. –include=’*.php’ $HOME/ pi@raspberrypi:~ building

모든 PHP 파일을 다른 컴퓨터에 동기화하려고합니다. ssh 통하다 rsync. 그러나 파일을 절대 복사하지 않습니다. Mac OSX Mountain Lion (10.8.4)에 있습니다.

다음은 내가 시도한 것입니다.

rsync --rsh=ssh --verbose --remove-source-files --recursive --exclude=* --include='*.php' $HOME/ pi@raspberrypi:~

building file list ... done
sent 36 bytes  received 20 bytes  112.00 bytes/sec
total size is 0  speedup is 0.00

또는

rsync --verbose --remove-source-files -e "ssh" $HOME/*.php pi@raspberrypi:~
rsync: link_stat "/Users/simonjackson/*.php" failed: No such file or directory (2)

sent 21 bytes  received 20 bytes  82.00 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files could not be transferred (code 23) at /SourceCache/rsync/rsync-42/rsync/main.c(992) [sender=2.6.9]

이것에 대한 어떤 생각?



답변

올바른 구문은 다음과 같습니다.

rsync --include="*.php" --filter="-! */"  출처   목적지 

정상적인 문제 exclude="*" 모든 파일과 폴더를 다시 제외시킬 수 있으므로 아무 것도 포함 할 수 없으므로 디렉토리를 포함하여 모든 항목이 제외됩니다.

설명하기 --filter 여기서 규칙을 정할 때, 맨 페이지를보십시오 :

에이 ! 패턴이 일치하지 않으면 포함 / 제외가 적용되도록 지정합니다. 예를 들어, "-! */" 모든 비 – 디렉토리를 제외합니다.

이것은 단순히 우리가 여기에서 원하는 것입니다. 왜냐하면 우리는 다른 모든 파일을 제외하기를 원하기 때문입니다.

또한 --exclude=* 일부 쉘에서만 작동하며 Bash는 예를 들어 작동합니다. Zsh에서는 확장하려고 시도 할 것입니다. * 명령을 실행하기 전에 그 뜻은 rsync 잘못된 include / exclude 목록을 가져옵니다. 그러므로 안전을 위해 패턴이 항상 조기에 확장되는 것을 막기 위해 패턴을 인용하십시오.

자세한 내용은 다음을 참조하십시오. rsync 필터 규칙 트릭


답변

이 주제가 도움이 될 수 있습니다. regex를 사용하여 일부 파일 만 포함하는 rsync

rsync의 –include와 –exclude가 regex를 이해하지 못하는 것 같습니다.

문안 인사,