나는 일반적으로 dd 명령(또는 이와 유사한 명령)을 사용하여 gzip으로 파이프하여 생성된 일부 컴퓨터 드라이브의 이미지 기반 백업을 유지합니다. 백업을 복원하기 위해 프로세스를 반대로 진행했습니다. 회전 드라이브에는 훌륭하게 작동하지만 SSD를 사용하면 이미 드라이브에 있는 데이터를 복구하기 위해 쓰기를 낭비하는 것을 싫어합니다. 이미 드라이브에 있는 데이터와 이미지 백업에 있는 데이터 사이에 기술적으로 몇 기가바이트의 데이터 차이만 있을 경우 SSD에 1TB의 데이터를 쓰고 수명이 1~2% 단축될 수 있습니다.
그렇다면 dd 이미지를 복원하고 데이터가 다른 경우에만 드라이브에 데이터를 쓰는 방법이 있는지 궁금합니다. 데이터 블록을 비교한 다음 해당 블록의 데이터가 다른 경우에만 해당 블록에 쓰는 경우에도 바이트 단위 검사일 필요는 없습니다. 이는 매우 도움이 될 것입니다.
답변1
나는 더 빠른 대안을 찾기 위해 여기에 왔습니다.
이와 관련하여 나의 현재 최선의 노력은 다음과 같습니다.
xdelta3 -e -s /dev/mmcblk0 <(zcat backup.img.gz) /tmp/delta
xdelta3 -d -s /dev/mmcblk0 /tmp/delta /dev/mmcblk0
이는 결국 상당히 느려지지만 쓰기 증폭 효과를 피하는 것 같습니다.
이 답변에 대한 로봇의 관심 덕분에 xdelta3
한동안 데비안 배포판에서 사용할 수 있었습니다( apt-get install xdelta3
)
Xdelta3은 바이너리 간의 변경 사항을 계산하도록 설계된 도구 세트입니다. 이러한 변경 사항(델타 파일)은 파일 간의 변경 사항만 저장하고 전송하는 데 사용할 수 있다는 점에서 "diff" 프로그램의 출력과 유사합니다. Xdelta3에서 관리하는 "델타 파일"은 RFC3284(VCDIFF) 형식으로 저장됩니다.