我想创build一个运行的Linux安装到USB 16 GB的笔式驱动器的副本。 目前的系统是一个基本的ATX个人电脑用作远程位置的无头服务器。 如果硬盘出现故障,我希望有一个备份选项。 基本上有人会closures计算机,插入包含系统的确切副本的USB,系统将启动并运行USB驱动器,只要需要,直到我可以到达与新的适当的HDD更换的位置。
目前的硬盘是120 GB。 使用的空间大约是5 GB。 所以问题是:
1.如何创build一个精确(可启动)的副本,到一个较小的16 GB的USB驱动器?
2.当我进行新的硬盘安装时,如何将所有内容复制到更大的硬盘上(即250 GB或500 GB)? 最好将文件系统扩展回整个磁盘大小,因为剩余的空闲空间偶尔用作延时摄影存储器。
以下是有关当前磁盘configuration的更多详细信息:
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
免责声明使用低级工具可能会损害您的系统! 不要问我有什么可能造成的损失!
对于这类工作,我使用个人版本的Debian-Live ,并使用所有需要的磁盘工具
gsmartcontrol smartmontools partclone ntfs-3g lvm2 mdadm
有几个步骤来支持你的机器:
parted , sfdisk , gparted或其他cfdisk任何一个…依次使用mdadm和/或lvm2工具。 复制数据复制数据可以通过以下命令完成: tar -cpC /sourcePath . | tar -xpC /destPath tar -cpC /sourcePath . | tar -xpC /destPath 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上启动,你必须build立你的目标结构, 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替代多操作系统 有一个全面的解决scheme来支持整个分区,但是当你每个分区存储一个字节时 ,你需要一个更大或者相同大小的目的地(这可以存储在小的USB密钥上)。
基础是完全相同的,build立你自己的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)
比…重新启动…!