rsync
스크립트를 사용하여 한 호스트의 데이터를 다른 호스트의 데이터와 동기화했습니다. 데이터에는 거의 1.2TB에 기여하는 수많은 소형 파일이 있습니다.
해당 파일을 동기화하기 위해 rsync
다음과 같은 명령을 사용 하고 있습니다.
rsync -avzm --stats --human-readable --include-from proj.lst /data/projects REMOTEHOST:/data/
proj.lst의 내용은 다음과 같습니다.
+ proj1
+ proj1/*
+ proj1/*/*
+ proj1/*/*/*.tar
+ proj1/*/*/*.pdf
+ proj2
+ proj2/*
+ proj2/*/*
+ proj2/*/*/*.tar
+ proj2/*/*/*.pdf
...
...
...
- *
테스트로 두 프로젝트 (8.5GB의 데이터) 중 두 가지를 선택하여 위의 명령을 실행했습니다. 순차적 프로세스이므로 완료하는 데 14 분 58 초가 소요됩니다. 따라서 1.2TB의 데이터에는 몇 시간이 걸립니다.
나는 여러 수 할 경우 rsync
병렬 프로세스 (사용 &
, xargs
또는 parallel
), 내 시간을 절약 할 것이다.
parallel
( cd
소스 디렉토리에 연결 한 후) 아래 명령을 사용 하여 실행하는 데 12 분 37 초가 걸렸습니다.
parallel --will-cite -j 5 rsync -avzm --stats --human-readable {} REMOTEHOST:/data/ ::: .
시간이 5 배 단축 되었으나 그렇지 않았습니다. 나는 어딘가에 잘못 가고 있다고 생각합니다.
rsync
실행 시간을 줄이기 위해 여러 프로세스를 어떻게 실행할 수 있습니까?
rsync
s를 병렬화하는 것이 최우선 과제입니다.
rsync
병렬 병렬이 현재 주요 초점입니다.