2013-07-02 2 views
0

좋아, 그래서 파일 구조의 복사본을 만들 필요가 있지만 구조가 거대하고 (수백만 개의 파일) 나는 그것을 복사하는 가장 빠른 방법을 찾고있다.전체 파일 구조에 대한 cp -l의보다 빠른 대안?

나는 현재 cp -lR "$original" "$copy"을 사용하고 있지만이 경우에도 매우 느립니다 (몇 시간 걸립니다).

내가 사용할 수있는 더 빠른 방법이 있는지 궁금합니다. 나는 rsync --link-dest을 알고 있지만 이것은 더 빠르지는 않지만 매 시간마다 스냅 샷을 만들고 싶기 때문에 실제로는 더 빠르 길 바랍니다.

대체 방법은 각 폴더에 변경 사항 만 복사 한 다음 (마지막 전체 스냅 샷에 도달 할 때까지 오래된 폴더로 rsync 새 폴더를 만들 때) "평평하게"변경하는 것입니다. 실제로 각 폴더가 자체 스냅 샷이 될 것입니다.

+1

기본적으로 스냅 샷을 지원하는 파일 시스템 (예 : btrfs 또는 zfs)을 사용해보십시오. 디스크 비용을 최소화하면서 몇 초안에 스냅 샷을 생성 할 수 있습니다. –

답변

-1

파일에 따라 압축하여 성능 향상을 얻을 수 있습니다

이는 "원래"디렉토리의 타르볼을 만들어
cd "$original && tar zcf - . | (cd "$copy" && tar zxf -) 

가, 다음, 표준 출력으로 데이터를 전송 ("복사"디렉토리로 변경 이는 반드시 존재해야 함) 들어오는 스트림을 압축 해제합니다. tar zxvf -

+0

왜 tar, gzip, gunzip, untar가 단순히 파일을 복사하는 것보다 빠름을 설명 할 수 있습니까? – jgb

+0

@glenn 하드 링크를 생성하고 실제로는 전혀 복사하지 않는 (새 디렉토리를 만드는 것을 제외하고는)'cp -lR'보다 더 빠를 수 있을지 모르겠습니다. 제 경우의 오버 헤드는 계층 구조의 크기 인 것 같습니다. 따라서 미리 파일 하나를 줄이는 것이 좋지만, 불행히도 내 경우에는 그렇지 않을 수 있습니다. 동일한 거대한 계층 구조와 전체 공간 낭비. – Haravikk

0

왜 링크 이명 령을 폐기됩니다

추출 용

, 당신은 진행 상황을보고 할 수 있습니다? 나는 그 옵션으로 스크립트를 사용하고 꽤 자주 스냅 샷을 찍습니다. 성능은 꽤 좋습니다. 당신이 pax가 설치되어있는 경우 https://github.com/alvaroreig/varios/blob/master/incremental_backup.sh

+0

오, 나쁜 선택이라고 말하지는 않겠지 만, 그게 전부라면 'cp -lR'은'rsync'보다 오버 헤드가 적어야합니다. 매우 큰 방법처럼 빠른 방법이 있는지 궁금합니다. 구조조차'cp -lR'는 극단적으로 느릴 수있다. 'rsync'의 가장 큰 장점은 업데이트 된 파일을 복사하는 것 외에도 나머지 명령을 연결하는 것과 같은 단일 명령으로 다른 물건을 동시에 수행 할 수 있다는 것입니다. – Haravikk

0

, 당신은 그것을 사용할 수 있습니다

은 재고 경우, 여기 내가 사용하는 스크립트입니다. POSIX 당 tar 또는 cpio라고 생각하면되지만 표준입니다.

#!/bin/sh 

# Move "somedir/tree" to "$odir/tree". 
itree=$1 
odir=$2 
base_tree=$(basename "$itree") 
pax -rw "$itree" -s "#$itree#$base_tree#g" "$odir" 

-s replstr는 불행한 필요성 (당신이 $ odir/$ itree 그렇지 않은 경우를 얻을 수 있습니다)이지만, 잘 작동하고, 지금까지 대형 구조물에 대한 CP보다 빨리왔다.

tar는 한 사람이 이미 제안한대로 pax가없는 경우 물론 다른 옵션입니다.