디렉토리 복사를 위해 pv를 통한 진행 정보 복사하고 진행 상황을

매우 큰 디렉토리 (여기에서 테라 바이트로 표시)를 복사하고 진행 상황을 모니터링하고 싶습니다.

나는 pv이것이 좋은 유틸리티라는 것을 알았지 만 디렉토리를 재귀 적으로 복사하는 데 어떻게 사용할 수 있습니까? ( pv src > dst디렉토리이기 때문에 작동하지 않습니다)

PS : pvMac X 포트에서 설치 한 OS X Mountain Lion에서 실행



답변

사용하다 rsync --progress [SRC] [DST]

man rsync매우 유용한 옵션이 많으므로 페이지를 확인하십시오 . -a아카이브는 좋은 시작이지만 정확한 요구 사항에 따라 다릅니다.

파이프를 통한 복사는 특히 파일 기반 인 경우 복사 프로세스를 불필요하게 느리게합니다.


답변

당신은 사용할 수 있습니다 tar또는 pax또는 cpio:

mkdir -p dst &&
  (cd src && tar cf - .) | pv -trb | (cd dst && tar xpf -)

답변

타르.

tar -cf - /var/log/ | pv | tar -C . -x

예:

# tar -cf - /var/log/ | pv | tar -C . -x
tar: Removing leading `/' from member names
58MB 0:00:05 [ 2.2MB/s] [                   <=>

답변

다음은 진행 정보가있는 디렉토리를 복사하는 명령입니다.


작은 파일이 많은 경우 :

cp -av sourcedir targetdir | pv -l -s filecount > logfile

복사 된 파일 수에 따라 진행률이보고됩니다.

/dev/null필요하지 않은 경우으로 리디렉션 할 수 있습니다 logfile.

다음 명령을 사용하여 얻으십시오 filecount.

find sourcedir | wc -l

큰 파일이 거의없는 경우 :

tar c sourcedir | pv -s size | tar x -C targetdir

복사 된 바이트를 기준으로 진행률을보고합니다.

targetdir 존재해야합니다.

다음 명령을 사용하여 얻으십시오 size.

du -sh sourcedir

rsync를 사용하려는 경우 :

rsync -ai sourcedir/ targetdir/ | pv -l -s filecount > logfile

얻기 filecount위의 그림과 같이.

동일한 시스템에서 복사하는 경우와 rsync -a거의 동일합니다 cp -a. rsync의 장점은 네트워크를 통해 복사하거나 이전 복사본을 업데이트 (또는 비교)하는 경우입니다.

자세한 내용은 여기를 참조하십시오.


답변

du -b /directory/일반 복사 명령이 진행되는 동안 소스와 대상 모두에 대해 작업을 수행하고 둘을 비교할 수 있습니다. 이것은 마찬가지로 효과적이며 파이프를 통해 복사 프로세스를 진행하여 속도를 늦추지 않습니다.


답변

find source-dir -print0 | xargs -0 -I % pv % > dest-dir/%