200GB의 사용 가능한 디스크 공간, 16GB의 RAM (데스크톱 및 커널이 ~ 1GB를 점유) 및 6GB의 스왑이 있습니다.
240GB 외부 SSD가 있으며 70GB는 1을 사용 하고 나머지는 무료로 사용 하므로 디스크에 백업해야합니다.
일반적으로 dd if=/dev/sdb of=Desktop/disk.img
디스크를 먼저 압축 한 다음 압축하지만 이미지를 먼저 만드는 것은 옵션이 아닙니다. 압축 단계로 인해 여유 공간이 찌그러 지더라도 디스크 공간이 훨씬 많이 필요하므로 최종 아카이브는 디스크에 쉽게 맞출 수 있습니다.
dd
기본적으로 STDOUT에 쓰고 gzip
STDIN에서 읽을 수 있으므로 이론적으로 쓸 수 dd if=/dev/sdb | gzip -9 -
는 있지만 gzip
바이트를 읽는 데 비해 바이트를 읽는 데 훨씬 오래 걸립니다 dd
.
보낸 사람 man pipe
:
파이프의 쓰기 엔드에 기록 된 데이터는 파이프의 읽기 엔드에서 읽을 때까지 커널에 의해 버퍼링됩니다.
필자 |
는 실제 파이프와 같은 것으로 시각화합니다. 하나는 데이터를 입력하고 다른 하나는 파이프 대기열에서 데이터를 가능한 빨리 가져옵니다.
왼쪽의 프로그램이 파이프의 다른 쪽에서 처리 할 수있는 것보다 더 많은 데이터를 더 빨리 쓰면 어떻게됩니까? 메모리가 많이 걸리거나 스왑 사용이 발생합니까? 아니면 커널이 디스크에 FIFO를 작성하여 디스크를 채우려 고합니까? 아니면 SIGPIPE Broken pipe
버퍼가 너무 크면 실패 합니까?
기본적으로 이것은 두 가지 질문으로 요약됩니다.
- 한 번에 읽는 것보다 더 많은 데이터를 파이프에 입력하면 어떤 영향을 미칩니 까?
- 압축되지 않은 전체 데이터 스트림을 디스크에 넣지 않고 데이터 스트림을 디스크로 압축하는 안정적인 방법은 무엇입니까?
참고 1 : 사용 된 처음 70GB를 정확하게 복사 할 수 없으며 조각화 및 전체 내용을 그대로 유지 해야하는 기타 요소로 인해 작동중인 시스템 또는 파일 시스템을 얻을 것으로 예상됩니다.
lzop
대신 gzip
; 압축 비율이 약간 낮아서 훨씬 빠르게 압축됩니다. 압축 속도가 실제 병목 현상이 발생할 수있는 디스크 이미지에 이상적입니다.