나는 한동안 rsync(v3.0.6)를 통해 서버를 백업해 왔습니다. 델타 파일 목록을 가져오는 데만 약 20분이 소요되는 것을 확인했습니다(전체 파일 플래그를 사용하고 있었습니다). 세 개의 파일을 제외했는데 해당 파일을 꺼내면 동기화가 시작되는 데 1초밖에 걸리지 않습니다. 파일은 319개뿐입니다(건너뛴 디렉터리를 포함하는 경우 689개). 어떤 아이디어나 생각이 있나요? 패턴 일치가 너무 느려서는 안 되나요?
rsync -vvnWr --exclude='aaa.tar.gz' --exclude='bbb.tar.gz' -exclude='ccc.tar.gz' --include='*.tar.gz' --exclude='*' --delete -e "ssh -p 34577 -i /root/.ssh/backup_rsa" [email protected]:/backup/cpbackup/daily/ /backup/jarvis/cpanel/$((($(date +\%-d)-1)/7+1))/*
샘플 출력
[sender] showing file ddd.tar.gz because of pattern *.tar.gz
[sender] showing file eee.tar.gz because of pattern *.tar.gz
[sender] hiding directory fff.0 because of pattern *
[sender] showing file ggg.tar.gz because of pattern *.tar.gz
...
출력은 제외 없이 우리의 출력과 동일합니다. 분명히 제가 나열한 출력을 건너뜁니다. 제외로 인해 각 항목 사이에 긴 일시 중지가 발생합니다. IP와 파일명을 변경했습니다.
감사해요!
답변1
잠을 좀 자야겠다는 생각이 들었습니다. 제외 항목에 하이픈이 누락되었습니다. 구문 오류를 일으키지 않고 추가 인수로 읽어야 하며 -c 체크섬 플래그가 속도를 느리게 만드는 원인일 수 있습니다.
읽어주신 모든 분들께 감사드립니다!
답변2
rsync
너무 느린 주된 이유는 제공해야 하는 대부분의 최적화를 비활성화했기 때문입니다 . 실행할 때마다 포함된 모든 파일이 복사되는 단계에 거의 다 왔습니다.
왜? 변화를 --whole-file
허용하기보다는 강요합니다 . 또한 타임스탬프를 rsync
사용하거나 복사하지 않으므로 체크섬 이 일치하는지 확인하려면 로컬 및 원격 시스템의 모든 파일을 읽어야 합니다.-t
-a
rsync
이 시도
rsync --dry-run -vvtr \
--exclude='aaa.tar.gz' --exclude='bbb.tar.gz' -exclude='ccc.tar.gz' --include='*.tar.gz' --exclude='*' \
--delete --delete-during \
-e "ssh -p 34577 -i /root/.ssh/backup_rsa" \
[email protected]:/backup/cpbackup/daily/ \
/backup/jarvis/cpanel/$((($(date +\%-d)-1)/7+1))/