모든 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를 이해하지 못하는 것 같습니다.
문안 인사,