可启动的 USB 备份

可启动的 USB 备份

我想将我正在运行的 Linux 安装复制到一个 16 GB 的 USB 笔式驱动器上。当前系统是一台基本的 ATX PC,用作远程位置的无头服务器。我希望有一个备份选项,以防硬盘驱动器发生故障。基本上,有人会关闭计算机,插入包含系统精确副本的 USB,系统就会从 USB 驱动器启动并运行,直到我能到达更换了新硬盘驱动器的位置。

当前硬盘为 120 GB。已用空间约为 5 GB。因此问题是:
1. 如何在较小的 16 GB USB 驱动器上创建该硬盘的精确(可启动)副本?
2. 当我安装新硬盘时,如何将所有内容复制回更大的驱动器(即 250 GB 或 500 GB)?最好将文件系统扩展回整个磁盘大小,因为其余的可用空间偶尔用作延时摄影存储。

以下是有关当前磁盘配置的更多详细信息:

fdisk -l

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xac46573c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64       14594   116707328   8e  Linux LVM

Disk /dev/mapper/VolGroup-lv_root: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/mapper/VolGroup-lv_swap: 1979 MB, 1979711488 bytes
255 heads, 63 sectors/track, 240 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/mapper/VolGroup-lv_home: 63.8 GB, 63837306880 bytes
255 heads, 63 sectors/track, 7761 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

DF-BG

Filesystem           1G-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root
                           50G        3G       45G   5% /
tmpfs                       1G        0G        1G   0% /dev/shm
/dev/sda1                   1G        1G        1G  20% /boot
/dev/mapper/VolGroup-lv_home
                           59G        1G       55G   2% /home

答案1

用于对硬盘进行低级操作的通用工具

免责声明使用低级工具可能会损害您的系统!不要问我任何有关您造成的潜在损害的信息!

对于这种工作,我使用个人的版本的Debian-Live,内置所有需要的磁盘工具

    gsmartcontrol
    smartmontools
    partclone
    ntfs-3g
    lvm2
    mdadm

备份

备份你的机器有几个步骤:

  • 复制分区结构为此,您可以使用partedsfdiskgparted其他cfdisk...后跟mdadm和/或lvm2工具。
  • 复制数据复制数据可以通过以下命令完成:tar -cpC /sourcePath . | tar -xpC /destPath。对于备份已挂载且子挂载处于活动状态的分区,我使用以下命令解决方法(示例备份根目录/):

    # Debian-live is automatically mounted to /media/DEBIAN-LIVE and /media/persistance
    mkdir /media/persistance/root/Backup
    mount --bind / /mnt
    tar -zcpC /mnt . >/media/persistance/root/Backup/root.tgz
    umount /mnt
    
  • 使系统可启动。这更微妙:假设你已经启动了Debian-Live您必须chroot在其中构建目标结构,然后运行grub-install

    # mount /dev/mapper/VolGroup-lv_root /mnt
    # mount dev/sda1 /mnt/boot
    # # /home is useless for installing grub
    # for bind in proc sys dev{,/pts};do mount --bind /$bind /mnt/$bind;done
    # chroot /mnt
     # /usr/share/mdadm/mkconf >/etc/mdadm/mdadm.conf
     # update-initramfs -u -k all
     # grub-install
     # exit
    # umount /mnt/{dev{/pts,},sys,proc,}
    

然后(希望一切正常)我重新启动。

选择多操作系统使用partclone

有一个全面的备份整个分区的解决方案,但当你存储逐字节每个分区,你需要一个比源更大或大小相同的目标:(无论如何,这可以存储在小型 USB 密钥上)。

基础是相当相同的,建立自己的Debian 直播配备了所有需要的工具,但是partclone

比在同一磁盘上存储共享 WinXP 和 Linux 的整个多重启动磁盘(示例):

mkdir ReleventDirectoryName
cd $_
SOURCE=sdA 
dd if=/dev/$SOURCE count=1 | gzip >bblock.gz
sfdisk -d /dev/$SOURCE >sfdisk.dump
partclone.ntfs -c -s /dev/${SOURCE}1 | xz >part1-ntfs.pclone.xz
partclone.ext4 -c -s /dev/${SOURCE}2 | xz >part2-ext4.pclone.xz
partclone.ext4 -c -s /dev/${SOURCE}5 | xz >part5-ext4.pclone.xz

等等...

恢复,你只需要反转这个过程:

cd ReleventDirectoryName
DEST=sdA
zcat bblock.gz | dd of=/dev/$DEST
sfdisk /dev/$DEST <sfdisk.dump
partclone.ntfs -r -o /dev/${DEST}1 < <(xzcat part1-ntfs.pclone.xz)
partclone.ext4 -r -o /dev/${DEST}2 < <(xzcat part2-ext4.pclone.xz)
partclone.ext4 -r -o /dev/${DEST}5 < <(xzcat part5-ext4.pclone.xz)

然后... 重启... !

相关内容