두 개의 큰 파일이 있습니다.
a.qcow2
16GB 입니다.b.qcow2
17GB 입니다.
.b.qcow2
a.qcow2
두 파일 간의 델타를 생성할 수 있는 Linux 명령은 무엇입니까? (크기는 2GB 미만이어야 합니다.)
a.qcow2
와 동일한 출력을 생성하기 위해 델타를 적용할 수 있는 Linux 명령은 무엇입니까 b.qcow2
?
원본 및 대상 크기, 해시 등 델타 형식에 대한 보안 조치가 있습니까?
답변1
두 개의 유사한 가상 머신이 있는 경우 qemu 옵션을 사용하는 것이 좋습니다: backing_file
qemu-img create -f qcow2 \
-o backing_file=/path/to/base/image.qcow2 \
/path/to/new_guest/image.qcow2
이렇게 하면 마스터 이미지를 만든 다음 원본 이미지와 두 번째 이미지 사이에 diff 파일만 만들어서 많은 GB 공간을 절약할 수 있습니다. 또한 이러한 파일 간의 바이너리 차이점을 정말로 알고 싶다면 다음 명령을 확인하는 것이 좋습니다.
- 차이점
- 텍사스
- 델타
답변2
두 시스템 간의 차이점을 전송하려고 한다고 가정합니다. 이것이 바로 공유 루트에서 QCOW 이미지를 리베이스할 수 없는 이유입니다.
이 rsync
도구를 사용하면 바이너리 diff를 생성할 수 있습니다. 다음은 (상당히) 작은 파일의 예입니다.
ls -l ?.qcow2
-rwxrwx--- 1 root root 76993536 Jan 2 2020 a.qcow2
-rwxrwx--- 1 root root 77337600 Oct 25 19:00 b.qcow2
b.qcow2
귀하의 질문에 따라 차이점을 알아내야 합니다 a.qcow2
. 제공된 항목은 rsync
소스와 대상 모두에 도달할 수 있으므로 동일한 서버에 있을 필요는 없습니다.
rsync -av --only-write-batch b_to_a.rsyncdiff b.qcow2 a.qcow2
이는 차이점을 확인하고 작성하며 b_to_a.rsyncdiff
보조 쉘 스크립트도 생성합니다.
ls -l b_to_a*
-rw------- 1 root root 35617731 Oct 26 09:26 b_to_a.rsyncdiff
-rwx------ 1 root root 54 Oct 26 09:26 b_to_a.rsyncdiff.sh
cat b_to_a.rsyncdiff.sh
rsync -av --read-batch b_to_a.rsyncdiff ${1:-a.qcow2}
변경 사항을 적용하려면 원본 소스 a.qcow2
와 차이점 만 필요합니다.
rsync -av --read-batch b_to_a.rsyncdiff a.qcow2
receiving incremental file list
b.qcow2
sent 61,509 bytes received 35,621,188 bytes 71,365,394.00 bytes/sec
total size is 77,337,600 speedup is 2.17
결과
ls -l ?.qcow2
-rwxrwx--- 1 root root 77337600 Oct 25 19:00 a.qcow2
-rwxrwx--- 1 root root 77337600 Oct 25 19:00 b.qcow2
답변3
개인적으로 나는델 탭이것은 Gentoo 사용자들 사이에서만 알려져 있습니다.
매우 빠르며 종종 xdelta
큰 차이로 앞서갑니다.