gzip-리디렉션 또는 파이핑? 최고의 블록

dd를 사용하여 큰 (750GB) 디스크를 외부 USB 디스크에 백업합니다.
리디렉션 또는 배관을 사용해야합니까? 어느 것이 더 효율적입니까? 아니면 차이가 있습니까?

또한 최고의 블록 크기는 얼마입니까? 여기에서 USB가 병목 현상이 될 수 있습니다.

dd if=/dev/sda bs=1M | gzip -c > /mnt/sdb1/backups/disk.img.gz

gzip -dc /mnt/sdb1/backups/disk.img.gz | dd of=/dev/sda bs=1M

vs

dd if=/dev/sda bs=1M | gzip -c | dd of=/mnt/sdb1/backups/disk.img.gz

dd if=/mnt/sdb1/backups/disk.img.gz | gzip -dc | dd of=/dev/sda bs=1M

감사.



답변

파이핑에는 하나 이상의 프로세스와 하나의 사용자 랜드 복사본이 필요 하므로 리디렉션을 사용하는 것이 더 효율적 이어야 합니다.

그러나 요즘 하드웨어 및 소프트웨어 캐싱 시스템에서는 실제로 차이가 없어야한다고 생각합니다. 어쩌면 당신은 사용하여 더 나은 결과를 얻을 수 있습니다 bs=4k또는 bs=64k그것은 이후, 파이프의 한계 리눅스가. 다른 bs 매개 변수 에 대한 자세한 내용은 이 질문 을 참조하십시오 .


답변

전혀 사용 dd하거나 배관 할 필요가 없습니다 .

</dev/sda gzip >/mnt/sdb1/backups/disk.img.gz
</mnt/sdb1/backups/disk.img.gz gunzip >/dev/sda

나는 한 번 벤치 마크를 했고 다른 디스크 사이의 직선 복사 dd보다 속도가 느린 것을 발견했다 cat. dd이 경우 파이프가 더 느리게 관련된 솔루션을 만들 것으로 기대합니다 .


답변

더 간단하게 :

gzip -c /dev/sda > disk.img.gz
gzip -dc /mnt/sdb1/backups/disk.img.gz > /dev/sda