내 홈 디렉터리와 이름이 특정 패턴과 일치하는 두 개의 하위 디렉터리에 있는 모든 파일을 동기화하고 싶습니다. 그러나 내 rsync 명령과 필터는 하위 디렉터리 중 하나만 통과합니다.
rsync -aHm --delete --include-from=/home/ftamborello/.rsync-include --exclude-from=/home/ftamborello/.rsync-exclude -e "ssh -A -t frank@frynseytv" /home/ftamborello/ :/Users/frank/Backup/
.rsync - 포함:
*.pdf
*.lisp
*.scr
*.r
*.txt
*.csv
*.py
*.c
*.h
*.[0-9][0-9]
.rsync*
.autobackup.sh
Documents/
fpt-logs/
.rsync-제외:
*
Rsync 명령 결과(-nv 사용):
building file list ... done
deleting .#fpt-log-2016.05.10
./
.ccl-init.lisp
.emacs.2016.06.17
.profile.2016.03.09
.profile.2016.08.05
.rsync-exclude
.rsync-include
fabfile.py
output.pdf
python-test.py
temp.txt
Documents/
fpt-logs/
fpt-logs/fpt-log-2015.12.16
fpt-logs/fpt-log-2015.12.17
...
fpt-logs/fpt-log-2016.08.19
fpt-logs/fpt-log-2016.08.22
sent 4,827 bytes received 1,130 bytes 2,382.80 bytes/sec
total size is 3,213,954 speedup is 539.53 (DRY RUN)
Documents/auto-backup-test.txt 및 cl-template.lisp와 같이 포함 패턴과 일치해야 하는 문서 계층 구조에 꽤 많은 파일이 있는데 rsync가 해당 파일을 복사할 수 없는 것 같습니다.
나는 내 코드를 개발하기 위해 이 unix.stackexchange 게시물을 사용했습니다.
내가 무엇을 놓치고 있나요?
답변1
나는 rsync
매뉴얼 페이지를 다시 RTFM했고 이번에는 지식의 핵심 커널인 것 같은 것을 발견했습니다.
--include
/ 명령줄 옵션 은--exclude
전체 범위의 규칙 구문 분석을 허용하지 않습니다.
이는 제외/포함 파일을 가리키면 동일한 결과가 생성된다는 의미라고 가정합니다. 그래서 .rsync-filter
파일을 만들고 그 -F
옵션을 사용했습니다. 이제 rsync는 전체 디렉터리 계층 구조를 탐색하여 .rsync-filter
내 파일의 패턴을 예상대로 일치시킵니다.
따라서 해결책은 가장 단순한 경우를 제외한 모든 경우에 제외/포함 대신 필터링을 사용하는 것 같습니다.