목적지에서 dd는 쓰기 작업을 버퍼링하여 더 빠르고 효율적으로 만듦. 출발지/목적지에서 gzip/gunzip을 추가하면 디스크가 가득 차 있지 않은 경우 전체 작업이 훨씬 빨라짐. 이 방법은 네트워크를 통해 PC 이미지를 만드는 가장 좋아하는 방법임. gzip에 --fast 옵션을 전달하거나, 더 빠른 lz4/unlz4로 대체하는 것이 좋음. 최근에 1TB NVMe가 있는 새로운 윈도우 노트북을 이미징할 때 사용했으며, GigE를 통해 20분 정도 걸렸고 결과 이미지는 20GB였음. 보통 이 lz4 이미지를 백업하고 몇 년 후 노트북을 기부할 때 unlz4 | dd로 복원함. 매우 편리함.
Linux 커널 모듈 nvme-tcp에 대해서는 몰랐지만, 매일 새로운 것을 배움. 이 모듈의 유용성은 dd로 원시 접근하는 것보다는 원격 NVMe에 파일 시스템을 마운트하는 데 더 있음.
Linux에서 최대 파이프 버퍼 크기는 64kB이므로 dd bs=X 인수는 기술적으로 그보다 클 필요가 없음. 그러나 bs=1M은 해가 되지 않고(64kB 읽기를 1MB가 될 때까지 버퍼링함) 파이프 크기가 증가할 경우를 대비하여 미래에도 사용 가능함. 일부 netcat 버전에는 입력 및 출력 블록 크기를 제어하는 옵션이 있어 dd bs=X 사용 필요성을 줄여주지만, 구조 복구 디스크에서는 이러한 옵션이 없는 netcat 바이너리가 보통 사용됨.
Hacker News 의견
저자의 시나리오에서는 NVMe/TCP를 사용하는 이점이 없음. 단순히
dd
를 사용하여 직렬 블록 복사를 수행하기 때문에 동시 I/O를 활용하지 못함. 복잡한 명령어들은 간단한netcat
으로 대체 가능.$ nc -l -p 1234 | dd of=/dev/nvme0nX bs=1M
사용.$ nc x.x.x.x 1234 </dev/nvme0nX
사용.dd
는 쓰기 작업을 버퍼링하여 더 빠르고 효율적으로 만듦. 출발지/목적지에서gzip/gunzip
을 추가하면 디스크가 가득 차 있지 않은 경우 전체 작업이 훨씬 빨라짐. 이 방법은 네트워크를 통해 PC 이미지를 만드는 가장 좋아하는 방법임.gzip
에--fast
옵션을 전달하거나, 더 빠른lz4/unlz4
로 대체하는 것이 좋음. 최근에 1TB NVMe가 있는 새로운 윈도우 노트북을 이미징할 때 사용했으며, GigE를 통해 20분 정도 걸렸고 결과 이미지는 20GB였음. 보통 이lz4
이미지를 백업하고 몇 년 후 노트북을 기부할 때unlz4 | dd
로 복원함. 매우 편리함.nvme-tcp
에 대해서는 몰랐지만, 매일 새로운 것을 배움. 이 모듈의 유용성은dd
로 원시 접근하는 것보다는 원격 NVMe에 파일 시스템을 마운트하는 데 더 있음.dd bs=X
인수는 기술적으로 그보다 클 필요가 없음. 그러나bs=1M
은 해가 되지 않고(64kB 읽기를 1MB가 될 때까지 버퍼링함) 파이프 크기가 증가할 경우를 대비하여 미래에도 사용 가능함. 일부netcat
버전에는 입력 및 출력 블록 크기를 제어하는 옵션이 있어dd bs=X
사용 필요성을 줄여주지만, 구조 복구 디스크에서는 이러한 옵션이 없는netcat
바이너리가 보통 사용됨.nbdkit
과nbdcopy
를 사용하는 것이 훨씬 간단함.nbdkit file /dev/nvme0n1
nbdcopy nbd://otherlaptop localfile
새 노트북을 설정해야 했을 때, USB-C 케이블을 사용하여 10Gb/s로 전송하는 것이 유용함. 다른 옵션으로는 WiFi밖에 없었음.
rsync
를 사용하여 전송 가능. 링크가 포화된 것으로 보여 다른 프로토콜을 사용하는 것은 무의미함.최근에 WiFi를 통해 약 200GB의 파일을 복사해야 했음. 연결 실패 시 처음부터 다시 시작하지 않도록
rsync
를 사용했지만, 적어도 6시간이 걸림. 더 나은 방법이 궁금함.dd
방법으로 어떤 보장을 받는지? 결과 블록 레벨 장치의 md5를 비교해야 하는지?저자가 왜 네트워크를 통해
btrfs
를 파이프하지 않았는지 이해할 수 없음. 먼저btrfs
스냅샷을 만든 다음btrfs send => nc => network => nc => btrfs receive
를 통해 사용 중인 블록만 전송함.이전에 노트북을 전송할 때 양쪽에서
dd
와nc
를 결합한 설치 프로그램을 실행했음. 기억나는 대로, 전송을 더 빠르게 하기 위해gzip
도 추가함.Clonezilla
를 사용하면 실제 데이터 블록만 복사하고 파티션을 자동으로 조정할 수 있음. 항상 이 방법을 사용함.수십 년 동안 실제로 OS를 "설치"하지 않았으며, 파일을 복사하고 필요에 따라 조정함. 보통 새 파일 시스템을 만들어 파일 시스템 유형/파라미터(예: 블록 크기), 암호화 등을 업데이트하는 기회로 사용하고 파일을
rsync
로 전송함.NixOS
와 같은 더 선언적인 접근 방식을 사용하는 것이 더 나을 수 있음. 여기서는 설정만 복사한 다음 모든 것을 자동으로 다시 설치할 수 있음.FDT(Fast Data Transfer)에 대한 언급이 없음.
-limit <rate>
옵션으로 전송 속도를 지정된 속도로 제한할 수 있음. K(KiloBytes/s), M(MegaBytes/s), G(GigaBytes/s)를 접미사로 사용할 수 있음.