내가 예상하는 이벤트 순서는 다음과 같습니다.
대부분의 루트 디렉터리 백업
sudo rsync -aAXv --delete --exclude={/dev/*,/proc/*,/sys/*,/mnt/*,/media/*} / /BACKUP
반전 과정
sudo rsync -aAXv --delete --exclude={/dev/*,/proc/*,/sys/*,/mnt/*,/media/*} /BACKUP /
나는 먼저 온전한 확인을 하지 않고 파트 2를 시도하는 것에 대해 긴장했기 때문에 이 게시물을 작성했습니다. 출력은 --dry-run
모두 좋아 보이지만 먼저 확인하고 싶습니다.
답변1
rsync를 사용한 전체 시스템 백업 복구를 위해 다음을 성공적으로 사용했습니다.
백업 명령:
sudo rsync -aHAXS --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /* /backup
-H
하드 링크 도 추가했습니다 . 나는 그것을 사용하는 것이 좋습니다. 그리고 -S
파일이 드물다면. 가상 머신용으로 많이 가지고 있습니다.
복원하려면 라이브 CD/USB를 사용하고 새로 포맷된 빈 디스크를 마운트한 /mnt
다음,
복구 명령:
sudo rsync -aHAXS --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /backup/* /mnt
앞으로 일어날 일 /etc/fstab
( /mnt/etc/fstab
)을 잘 살펴보고 grub.cfg
, 다시 시작하면 잘 될 것입니다.
제외와 관련하여 lost+found
XFS와 같은 일부 파일 시스템에서는 사용할 수 없으므로 이러한 파일 시스템을 사용하는 경우 포함해도 문제가 없습니다.
답변2
실제로 최고의 건전성 점검은백업에서 부팅.
실제 테스트를 통해 100% 확신할 수 있는 유일한 방법입니다!
내가 아는 한, 루트 디렉터리 내의 폴더에서는 이 작업을 수행할 수 없습니다. (실제로 제가 사용하고 있는 타겟은 "루트 트리 내의 폴더"이지만 /media/$USER/RootBackup 에서는 실제로는 또 다른 파일 시스템입니다.) 바로 사용하기 위해 백업을 복원할 필요도 없고 그냥 급한 경우나 나쁜 일이 발생하면 백업에서 부팅하고 거기에서 복원하세요!
를 사용하면 rsync
필요할 때마다 매우 빠르게 루트 백업을 업데이트할 수 있습니다. 나는 우분투 20.04에서 커널과 기타 핵심 패키지를 업데이트하기 전에 매번 이 작업을 수행합니다.
관찰: LVM도 사용하는 경우 LVM 스냅샷을 매우 느린 옵션으로 폐기합니다.
나는 이 명령을 사용하고 있습니다.
sudo rsync -axHAXv --delete-excluded / --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /media/$USER/RootBackup/
그런 다음 몇 번 실행하여 중요한 파일이 변경되지 않았는지 확인합니다.
--delete-excluded의 중요성은 실제로 동기화를 유지하는 것입니다(동일).
또한 /boot는 거기에 마운트된 또 다른 파티션이므로 별도로 백업했습니다.
sudo rsync -axHAXv --delete-excluded /boot/ --exclude=/lost+found /media/$USER/RootBackup/boot/
처음 실행한 후 다음을 수행했습니다.
grub-update
하지만 여기서는 작동하지 않았고, 제가 만든 새 파일 시스템이 아닌 LVM 장치를 계속 가리키므로 다음과 같이 했습니다.
mount |grep RootBackup #copy the device name, ex.: sdb4
ls /dev/disk/by-uuid/ -l |grep sdb4 # copy the UUID ex.: 4e97fe69-93ae-4e6a-a2cc-3406cb21176c
grub-update
이제 grub.cfg에서 /boot/grub/custom.cfg로 새 메뉴 항목을 복사합니다. (저는 여기서 gpt를 사용하고 있습니다. 이것이 필요하지 않을 수도 있습니다. 필요에 따라 생성된 메뉴 항목을 복사하고 수정하면 됩니다.)
menuentry 'RootBackup by UUID' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'osproberfailed-manualadjustment-gnulinux-simple-4e97fe69-93ae-4e6a-a2cc-3406cb21176c' {
insmod part_gpt
insmod ext2
set root='hd3,gpt13'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd3,gpt13 --hint-efi=hd3,gpt13 --hint-baremetal=ahci3,gpt13 4e97fe69-93ae-4e6a-a2cc-3406cb21176c
else
search --no-floppy --fs-uuid --set=root 4e97fe69-93ae-4e6a-a2cc-3406cb21176c
fi
linux /boot/vmlinuz root=UUID=4e97fe69-93ae-4e6a-a2cc-3406cb21176c ro quiet splash $vt_handoff debug --verbose
initrd /boot/initrd.img
}
관찰: 메뉴 항목을 자동으로 생성한 후 필요한 중요한 수정 사항 grub-update
은 다음과 같습니다.
- 올바른 UUID가 설정되었음을 부여합니다. 전체 백업이 단일 파티션으로 끝나기 때문에
search
명령은 동일한 UUID를 사용합니다.linux
- vmlinuz 및 initrd는 "/boot/"에서 검색되어야 하며 자동 심볼릭 링크를 사용하여 유지 관리할 필요가 없습니다.
root=UUID=...
/dev/sdb4가 무작위로 sdc4로 변경되어 신뢰할 수 없기 때문에 linux 명령을 사용해야 합니다.- PARTUUID는 작동하지 않으므로 사용하지 마세요.
복원하려면 백업에서 부팅합니다. 그러면 원본 경로는 /가 되고 대상 경로는 설치해야 하는 다른 경로가 됩니다.
너무 오랫동안 기본 루트 백업 프로세스를 실행하지 않은 경우를 대비하여 다음을 수행하십시오.
- 작업 중인 백업 루트에서 부팅
- 만들다기본 루트 FS에서 두 번째 백업
- 작업 중인 백업 루트를 기본 루트 FS로 복원
- 기본 루트 FS에서 부팅
- 누락되거나 잘못된 항목이 발견되면 방금 생성한 두 번째 백업에서 필요한 항목을 가져옵니다.
중단 없이 핵심 시스템 파일을 중요한 업데이트로 업데이트할 필요 없이 데스크탑 컴퓨터에서 지금처럼 마음의 평화를 누리시기를 바랍니다. :)