많은 상대성 작은 데이터 파일이 있지만 약 50GB를 차지하므로 다른 컴퓨터로 전송해야합니다. 나는 이것을하는 가장 효율적인 방법을 생각하려고했습니다.
나는 모든 것을 압축하고 rsync하고 압축을 풀고 rsync -z를 사용하여 압축하고 gzip을 사용하여 rsync -z를 사용해야한다고 생각했습니다. rsync -z가 정확히 어떻게 구현되는지 확실하지 않기 때문에 어느 것이 가장 효율적인지 잘 모르겠습니다. 어떤 옵션이 가장 빠를까요?
많은 상대성 작은 데이터 파일이 있지만 약 50GB를 차지하므로 다른 컴퓨터로 전송해야합니다. 나는 이것을하는 가장 효율적인 방법을 생각하려고했습니다.
나는 모든 것을 압축하고 rsync하고 압축을 풀고 rsync -z를 사용하여 압축하고 gzip을 사용하여 rsync -z를 사용해야한다고 생각했습니다. rsync -z가 정확히 어떻게 구현되는지 확실하지 않기 때문에 어느 것이 가장 효율적인지 잘 모르겠습니다. 어떤 옵션이 가장 빠를까요?
답변:
gzip은 하나의 파일 만 압축하므로 "gzip으로 전체를 압축"할 수 없으며 tar 파일을 작성하여 "gzip으로 전체를 압축"하기 위해 gzip으로 압축 할 수 있지만 수정 된 파일 만 복사하는 rsync 기능을 잃게됩니다.
그래서 문제는 : gzip으로 rsync하거나 rsync의 -z 옵션에 의존 해야하는 파일을 저장하는 것이 좋습니다.
대답은 아마도 서버에서 파일을 압축 해제하지 않으려는 것입니다. 예라고 생각합니다. 따라서 rsync를 수행하기 전에 gzip 파일을 관리하는 방법을 알 수 없습니다.
수정 된 파일 만 복사하는 rsync 기능이 필요하지 않습니까? 이 경우 물건을 포함하는 tar.gz 파일의 scp를 수행하는 대신 rsync를 사용하는 이유는 무엇입니까?
어쨌든 질문에 대답하기 위해 rsync gzip은 gzip을 사용하는 gzip 파일보다 약간 덜 효율적입니다. 왜 ? rsync는 청크별로 데이터 청크를 gzip으로 압축하므로 gzip이 압축을 수행하는 데 사용하는 테이블을 만드는 데 더 작은 데이터 세트가 사용되므로 더 큰 데이터 세트 (gzip은 전체 파일을 한 번에 사용)가 더 나은 압축 테이블을 제공합니다. 그러나 차이는 대부분의 경우 매우 작지만 매우 드물게 차이가 더 중요 할 수 있습니다 (파일에서 많은 시간을 반복하지만 서로 멀리 떨어져있는 매우 긴 파일이있는 경우). 매우 간단한 예)
데이터를 한 번만 복사하는 경우 rsync가 그 자체로 큰 승리는 아닙니다. gzip (또는 파일이 많으므로 tar + gzip)이 마음에 들면 다음과 같이 해보십시오.
tar -cz /home/me/source/directory | ssh target tar -xz --directory /home/you/target/directory
그것은 당신이 찾고있는 압축을 얻고 rsync를 사용하지 않고 직접 복사합니다.
@radius, gzip
작동 방식 을 선택하는 작은 니트 - gzip
블록 기반 압축 알고리즘이며 상당히 간단한 알고리즘입니다. 전체 파일은 압축 테이블에 대해 고려되지 않으며 각 블록 만 고려됩니다. 다른 알고리즘은 파일의 전체 내용을 사용할 수 있으며 여러 블록 또는 가변 크기 블록의 내용을 사용하는 몇 가지가 있습니다. 매혹적인 lrzip
저자 중 하나가 바로 이것입니다 rsync
!
요약하면,를 사용 rsync -z
하면 먼저 압축 하는 것과 동일한 압축을 얻을 gzip
수 있습니다. 차등 전송을 수행하는 경우 rsync
의 diffing 알고리즘으로 인해 더 좋습니다 .
즉, 나는 차등이 아닌 전송에 대해 정기적으로 수 scp
월히 이길 것이라고 생각할 것입니다. rsync
왜냐하면 rsync
알고리즘 보다 오버 헤드가 훨씬 적기 때문입니다 ( scp
어쨌든 언더웨어를 사용할 것 입니다!).
네트워크가있는 경우 않는 병목 현상이, 당신은 와이어에 압축을 사용하고자하는 것입니다.
귀하의 경우 디스크가 병목 현상 압축 파일로 스트리밍 최선을 다 할 것입니다 때, 그건. (예를 들어, netcat
한 시스템에서 다음 시스템으로 스트리밍 gzip -c
)
일반적으로 속도가 중요한 경우 기존 파일을 미리 압축하는 것은 낭비입니다.
TIMTOWTDI, YMMV, IANAL 등
이 사람 에 따르면 사용하기 가 더 빠를 수도 rsync -z
있지만 전송하기 전에 각 파일을 먼저 압축하는 것만 큼 효율적이라고 생각합니다. 다른 사람들이 제안한 것처럼 tar 스트림을 압축하는 것보다 빠릅니다.
매뉴얼 페이지에서 :
Note that this option typically achieves better compression
ratios than can be achieved by using a compressing remote shell
or a compressing transport because it takes advantage of the
implicit information in the matching data blocks that are not
explicitly sent over the connection.
압축 파일의 scp와 rsync는 매우 유사한 전송 시간이 걸리기 때문에 "이 작업을 수행하는 가장 효율적인 방법"은 압축 전송이 아니라 즉석 압축입니다.
"fastness"외에도 다른 고려 사항은 다음과 같습니다.
모든 파일이 전송되지 않는 경우 rsync를 쉽게 다시 시작할 수 있습니다.
rsync를 사용하여 원격 시스템에서 파일을 유지 보수 할 수 있습니다.
로컬 tar 또는 gzip에는 로컬 공간이 필요합니다.
대상 시스템과 방화벽 모두에 대한 포트 사용 고려 사항 : 1) scp는 허용되지 않을 수있는 포트 22 (기본적으로)를 사용합니다. 2) rsync 사용자 포트 873 (기본적으로)
반경이 원래 포스터가 압축 해제 된 파일을 저장하지 않기를 기대하는 이유를 잘 모르겠습니다.