
rsync를 사용하여 백업을 만듭니다.
rsync -a --link-dest=PATHTO/$PREVIOUSBACKUP $SOURCE $CURRENTBACKUP
이렇게 하면 하드 링크를 사용하여 공간을 절약할 수 있습니다.
항상 변경되는 대용량 파일(가상 머신 이미지)을 백업해야 할 때 문제가 나타납니다.
이미지 전체가 아닌 변경된 부분만 하드링크할 수 있나요? 이 문제를 처리할 수 있는 도구가 있나요?
답변1
여기에서 할 수 있는 일이 많이 있습니다. 전체 파일만 가리킬 수 있기 때문에 이들 중 어느 것도 실제로 하드 링크를 사용하지 않는다는 점에 유의하십시오. 파일 시스템을 사용하면 btrfs
여기서 매우 유용한 가능성이 열립니다. 현재 btrfs
(최신 버전은 v3.13) 여전히 실험적입니다. 그러나 그암소(기록 중 복사) 기능은 이런 종류의 작업에 적합합니다(물론 동일한 파일 시스템에 백업을 두는 것이 허용된다는 전제 하에). btrfs
에 마운트된 파일 시스템 을 고려하면 /mnt
다음을 사용하여 전체 파일 시스템의 원자적 스냅샷을 만들 수 있습니다.
btrfs subvolume snapshot /mnt /mnt/snapshot
subvolume
부분 스냅샷을 허용하려면 디렉터리가 아닌 내부에 백업할 파일을 넣어야 합니다 . 예:
btrfs subvolume create /mnt/subvol
mv stuff /mnt/subvol
btrfs subvolume snapshot /mnt/subvol /mnt/subvol_snapshot
을 사용하는 것 외에도 btfrs
백업의 한쪽 또는 양쪽에 가상 머신 이미지를 마운트하고 rsync
두 마운트 지점 사이에서 사용하는 것을 고려할 수도 있습니다.
이 블로그.vdi
를 사용하여 Virtual Box 이미지를 마운트하는 방법을 보여줍니다 qemu-utils
. 루트로서의 명령(테스트되지 않음):
modprobe nbd
qemu-nbd -c /dev/nbd0 <vdi-file>
mount /dev/nbd0p1 /mnt
...
umount /mnt
qemu-nbd -d /dev/nbd0
마지막으로 유용할 수 있는 가장 간단한 접근 방식 --inplace
은 rsync
. 매뉴얼 페이지에서:
--inplace
This option changes how rsync transfers a file when its data needs to
be updated: instead of the default method of creating a new copy of the
file and moving it into place when it is complete, rsync instead writes
the updated data directly to the destination file.
...
This option is useful for transferring large files with block-based
changes or appended data, and also on systems that are disk bound, not
network bound.
물론 여기서 문제 는 파일 복사본을 대상에 생성해야 하기 때문에 이것을 함께 사용하면 --link-dest
(<2.6.4 버전에서는 두 가지가 완전히 호환되지 않음) 아무런 이점이 없다는 것입니다.rsync