我想将我正在运行的 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
备份
备份你的机器有几个步骤:
- 复制分区结构为此,您可以使用
parted
、sfdisk
或gparted
其他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)
然后... 重启... !