전체 하드 드라이브와 파티션 테이블에 대해 검색 가능한 전체 증분 백업을 만드는 방법은 무엇입니까?

전체 하드 드라이브와 파티션 테이블에 대해 검색 가능한 전체 증분 백업을 만드는 방법은 무엇입니까?

UEFI 이전에는 이 작업이 쉬웠습니다. dd를 사용하여 처음 63개 섹터를 백업한 다음 rsync를 사용하여 / 파티션에 있는 모든 항목의 복사본을 유지합니다.

이제 동일한 작업을 쉽게 수행할 수 있는 방법이 있습니까? efi 파티션을 /boot/efi로 마운트한 다음 / 마운트 지점을 사용하고 스왑하여 기본 ext4 파티션을 마운트하는 것입니다.

답변1

rsync를 사용하여 루트 파티션 및 ESP(EFI 시스템 파티션)의 파일을 백업합니다. 파티션 테이블의 복사본도 원하는 경우 sgdisk( -b백업) 옵션을 사용하여 파티션 테이블의 백업을 파일에 저장할 수 있습니다. -l복원하려면 (로드)를 사용하세요 . sgdisk 매뉴얼 페이지에서는 명목상 동일한 크기의 디스크라도 크기가 약간 다를 수 있으므로 동일한 디스크에만 백업을 복원할 것을 권장합니다. 어쨌든 파티션을 수동으로 다시 생성하는 것이 더 나을 수도 있습니다.

파티션 테이블을 제외한 모든 것이 첫 번째 GRUB 단계와 같이 파티션되지 않은 msgic 섹터가 아닌 파일에 있기 때문에 UEFI를 사용하여 디스크를 백업하는 것이 더 쉽다고 생각합니다.

답변2

dd if=/dev/sda of=/my/backup/image.img bs=8M백업된 드라이브에 EFI를 그대로 유지해야 하는 경우 전체 장치의 이미지를 이미지 파일로 만드는 경향이 있습니다.

이는 다소 과도하고 시간이 많이 소요될 수 있지만 제가 아는 가장 쉬운 방법입니다.

원하는 경우 이미지를 루프 장치로 마운트하고 그 안에 있는 파일을 검색/관리할 수 있습니다. gnome-disk-utility이 문제를 처리하기 위해 사용하기 쉬운 GUI가 제공됩니다.

답변3

이 백업은 파티션 테이블을 복사한 다음 파티션 내용의 증분 백업을 만듭니다 rsync. 블라인드 전체 백업에 비해 장점은 dd빠르고 자주 백업을 업데이트할 수 있고, 변경된 정보만 업데이트되며, 복사본의 모든 파일에 쉽게 접근하여 백업을 복원하기 전에 수정하거나 그냥 복구할 수 있다는 점입니다. 일부.

저는 Debian Stretch를 사용하고 있습니다(명령어의 이름이 다를 수 있습니다(예: RedHat)).

여기의 모든 작업은 루트로 수행되므로 주의하세요! :

su

  1. 어떤 하드 드라이브가 sda, sdb 등으로 인식되는지 확인하세요.

    fdisk -l

    백업하려는 노트북 하드 드라이브의 이름이 /dev/sda(sda1, sda2...파티션임) 표시되어 있습니다.

    경고: 행을 맹목적으로 복사하지 마십시오.백업하려는 하드 드라이브가 백업할 것이라고 가정 /dev/sda하지만 귀하의 경우는 그렇지 않을 수도 있습니다.

  2. 백업 복사본을 저장하려는 위치에 외장 하드 드라이브를 마운트합니다.

    다시 실행해 fdisk -l보니 이제 이름이 /dev/sdb. Debian Stretch가 마운트 /media/[username]/[whatever]하지만 저는 root 로 마운트하는 것을 선호합니다 /mnt/USB/.

    umount /media/[username]...
    mkdir /mnt/USB/  # this is done only this first time
    mount -t auto /dev/sdb1 /mnt/USB -rw
    mkdir /mnt/USB/backup #this is done only this first time
    mkdir /mnt/USB/backup/partition_table #this is done only this first time
    mkdir /mnt/USB/backup/files #this is done only this first time
    
  3. 파티션 테이블 유형이 MBR인지 GPT인지 확인

    parted /dev/sda print
    

    "파티션 테이블: gpt" 또는 "파티션 테이블: msdos"가 표시됩니다.

  4. 파티션 테이블을 외장 하드 드라이브의 파일로 백업

    MBR 테이블(파티션된 테이블: msdos)이 있는 경우:

    스토리지 파티션 테이블의 모든 섹터에 대해 전체 바이너리 백업을 만들 수 있습니다.

    dd if=/dev/sda of=/mnt/USB/backup/partition_table/backup-sda.mbr bs=512 count=1
    

    (나중에 복원하는 방법을 알아보겠습니다)

    참고: 파티션 테이블에 일부 변경 사항을 기록할지 확인하라는 메시지가 표시되므로 dd후자를 선호합니다. 시도하는 동안 실수로 "Y"를 눌렀기 때문에 엉망이 되기 쉽습니다.sfdisk

    GPT 테이블이 있는 경우

    sgdisk --backup=/mnt/USB/backup/partition_table/gpt_partition_table.bin /dev/sda
    

    (나중에 복원하는 방법을 알아보겠습니다)

  5. 모든 파일을 외부 드라이브로 증분 백업:

    이것은 당신이 나와 같고 모든 정보 트리가 매달려 있는 하드 드라이브에 Linux 배포판이 설치되어 있다고 가정합니다 /(지식이 풍부한 Linux 사람들이 이것을 좀 더 기술적인 방식으로 다시 작성해 주실 수 있습니까?). 내 경우에는 /efi 파티션이 마운트되었으므로 모든 내용을 백업하면 문제가 해결되었으므로 /boot/efi해당 내용도 백업에 포함됩니다.

    rsync -aAXv /* /mnt/USB/backup_of_laptop_hd/files --exclude={/dev/,/프로세스/,/체계/,/tmp/,/달리기/,/mnt/,/미디어/,/분실+찾음,/집//.gvfs,/var/tmp/,/집//. 은닉처/,/집//.썸네일//,/루트/.thumbnail//,/루트/.cache/,/집//.config/VirtualBox/*} --삭제

    참고 1:이것은 하나입니다증가백업, 즉 다음에 이 작업을 수행할 때 모든 것을 다시 복사할 필요는 없지만 변경된 파일만 자동으로 업데이트됩니다(삭제된 파일도 복사본에서 제거됨).

    노트 2:{} 사이의 모든 옵션은 백업(예: 임시 항목) 및 가상 머신(각 머신에 캡슐화된 .ova 파일을 유지하는 것을 선호함)에는 의미가 없습니다.

  6. 모두 복원하는 방법:

    첫째, 최악의 시나리오는 하드 드라이브를 영원히 엉망으로 만드는 것입니다. 먼저 파티션 테이블을 복원한 다음(파티션 테이블이 아직 존재하는 경우 이 단계를 건너뛰고) 라이브 USB에서 부팅해야 합니다.

    라이브 배포판에서 터미널을 열고 하드 드라이브 이름을 확인하세요.

    fdisk -l
    

    나는 노트북의 하드 드라이브가 여전히 /dev/sda예시에 있다고 가정합니다(경고, 아마도 이때일 것입니다 /dev/sdb).

    테이블이 MBR 테이블인 경우 위 지침에 따라 백업이 포함된 외장 하드 드라이브를 탑재한 후 다음을 수행하세요.

    dd if=/mnt/USB/backup/partition_table/backup-sda.mbr of=/dev/sda
    

    그러나 테이블이 GPT 테이블인 경우 다음과 같습니다.

    sgdisk --load-backup=/mnt/USB/backup/partition_table/gpt_partition_table.bin /dev/sda
    

    이미 이 작업을 수행했거나 파티션이 손상되지 않아 복구할 필요가 없었다면 이제 모든 파일을 복구해야 합니다. 이는 작업 중인 시스템에서 매우 안전하게 사용하여 마지막 백업으로 복원할 수도 있습니다.

    rsync -aAXv /mnt/USB/backup/files/* / --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found,/home/*/.gvfs,/var/tmp/*,/home/*/.cache/*,/root/.cache/*} --delete
    cp /mnt/USB/backup/files/vmlinuz / --preserve=all --remove-destination
    cp /mnt/USB/backup/files/vmlinuz.old / --preserve=all --remove-destination
    cp /mnt/USB/backup/files/initrd.img / --preserve=all --remove-destination
    cp /mnt/USB/backup/files/initrd.img.old / --preserve=all --remove-destination
    

    논평:rsync어떤 이유로든 트리 루트에 있는 파일이 직접 복원되지 않기 때문에 명령 에 마지막 네 줄을 추가해야 했습니다 . 또한 폴더가 /에 직접 위치하고 컴퓨터에서 삭제된 경우에도 백업에서는 삭제되지 않습니다. 이로 인해 문제가 발생하지는 않지만(해당 파일과 라이브러리가 더 이상 존재하지 않으므로 링크하거나 필요로 하는 사람이 없음) 보기 흉합니다.여기에서 rsync 구문을 수정하는 데 도움을 줄 수 있는 사람이 있나요?

    마침내,

    grub-install /dev/sda
    

참고 1:위의 rsync 구문을 사용하여 시스템을 이전 상태로 복원하는 경우가 많지만 파티션 테이블을 복원할 필요는 없었습니다.

  1. 그렇게 하는 것은 본인의 책임이며,
  2. 이 답변을 개선하려면 언제든지 변경 사항을 제안해 주세요.

노트 2:단순화를 위해 MBR 파티션에 대해서는 사용법만 소개하겠습니다 dd. 확장 파티션이 있는 경우에는 다음과 같이 백업하시기 바랍니다.

    dd if=/dev/sda of=/mnt/USB/backup/partition_table/backup-sda.mbr bs=512 count=1

    sfdisk -d /dev/sda > /mnt/USB/backup/partition_table/backup-sda.sfdisk

다음을 통해 MBR 및 파티션 테이블을 복원합니다.

    dd if=/mnt/USB/backup/partition_table/backup-sda.mbr of=/dev/sda

    sfdisk /dev/sda < /mnt/USB/backup/partition_table/backup-sda.sfdisk

관련 정보