备份整个操作系统


20

我必须格式化整个磁盘并重新安装Ubuntu。

我在当前系统上安装了很多软件。我也必须重新安装所有这些更新,驱动程序和应用程序。

有什么办法可以使安装的Ubuntu及其所有软件,首选项,驱动程序等生成.iso映像?

有什么办法可以备份整个操作系统及其所有软件,驱动器,更新和所有内容?


3
备份整个操作系统是一个有效的问题,但是,您给出的理由:“我必须格式化整个磁盘并重新安装Ubuntu”,这似乎很奇怪。为什么要格式化磁盘,然后又想重新安装当前磁盘上的所有内容,为什么要格式化呢?
马丁

您可能想考虑为什么Linux有分区,这是讨论这个问题的很好指南: tldp.org/LDP/intro-linux/html/sect_03_01.html#sect_03_01_02
椭圆视图

Answers:



21

您可以做的是备份主目录并保存已安装的所有软件包的列表。要保存已安装软件的列表,请使用以下命令:

sudo dpkg --get-selections > package_list

这将创建一个文件,其中包含此系统上安装的所有pakcages /软件的列表。您将需要将此文件备份到安全的地方。

然后,当您在计算机上重新安装ubuntu时,可以使用以下命令安装所有这些软件

sudo dpkg --set-selections < packages_list

该命令将不会安装任何东西。它将仅标记要安装的软件包。要安装它们,请运行以下命令:

sudo apt-get -u dselect-upgrade

这将需要一些时间来完成,因为您的系统将下载并安装所有软件包。完成此命令后,将您当前的主目录替换为以前备份的目录。

希望这可以帮助


但是我不需要在新安装的Ubuntu中重新安装软件包吗?
2011年

@Avinash:该命令将在新安装的Ubuntu中重新安装软件包
Jeremy Kerr,

@ Jeremy-我的意思是..该命令将获取(下载)软件包,然后安装它们,或者我不必下载任何我现在下载的文件?实际上,我不想下载任何我已经拥有的东西,因为下载大量数据要花费大量时间。
2011年

@Avinash:对不起,忘记添加命令来更新。我已经更新了答案plz检查。
2011年

并不是我会使用的方法,但是总体效果是相同的。
MBraedley 2011年

10

我回答“如何自定义实时Ubuntu CD?” 可以从当前安装中创建实时CD。这意味着您无需再次下载所有软件包。本指南可能显得漫长而艰难的,但它主要是和“复制和粘贴”,“跟着”。在这里,将其复制并编辑一下:

从现有/新安装中创建实时CD

一种好的方法是从当前安装中制作实时CD。这可以使用虚拟机来完成(只是不要在来宾操作系统中安装任何VM工具)

因此,首先我们需要全新安装(如果您不能真正安装它,请尝试使用虚拟机),并且仅安装您需要的东西(在您的情况下为Thunderbird,samba和ssh)。然后,我们调整系统并记录调整的位置(例如,更改桌面背景,设置在〜/ .gconf中或添加firefox快捷方式,它们位于〜/ Desktop中)。这是步骤4所需的。

  1. 设置一些变量:

    export WORK=~/temp
    export CD=~/livecd
    export FORMAT=squashfs
    export FS_DIR=casper
    

    将〜/ temp替换为我们将在其中工作的临时目录的路径。将〜/ livecd替换为CD树的路径。

  2. 制作文件夹结构。 sudo mkdir -p ${CD}/{${FS_DIR},boot/grub} ${WORK}/rootfs

  3. 现在,我们将需要安装一些软件包:

    sudo apt-get install grub2 xorriso squashfs-tools
    
  4. 现在,我们将复制当前安装,修改排除标志以满足您的需求:

    sudo rsync -av --one-file-system --exclude=/proc/* --exclude=/dev/* \
    --exclude=/sys/* --exclude=/tmp/* --exclude=/home/* --exclude=/lost+found \
    --exclude=/var/tmp/* --exclude=/boot/grub/* --exclude=/root/* \
    --exclude=/var/mail/* --exclude=/var/spool/* --exclude=${WORK}/rootfs \
    --exclude=/etc/fstab --exclude=/etc/mtab --exclude=/etc/hosts \
    --exclude=/etc/timezone --exclude=/etc/shadow* --exclude=/etc/gshadow* \
    --exclude=/etc/X11/xorg.conf* --exclude=/etc/gdm/custom.conf \
    / ${WORK}/rootfs
    

    如果您有单独的引导分区,请执行以下操作:sudo cp -av /boot/* ${WORK}/rootfs/boot
    如果要复制用户配置和文件,请根据需要修改此列表:CONFIG ='。config .gconf Desktop someotherfolder andanotherfolder'现在,我们复制您的配置和文件:

    cd ~ && for i in $CONFIG
    do
    sudo cp -rpv --parents $i ${WORK}/rootfs/etc/skel
    done        
    
  5. 现在,我们将根目录更改为新系统并对其进行修改。

    sudo mount  --bind /dev/ ${WORK}/rootfs/dev
    sudo mount -t proc proc ${WORK}/rootfs/proc
    sudo mount -t sysfs sysfs ${WORK}/rootfs/sys
    sudo mount -t devpts devpts ${WORK}/rootfs/dev/pts
    sudo chroot ${WORK}/rootfs /bin/bash
    

    接下来的命令在chroot中完成:

    LANG=
    apt-get update
    apt-get install casper
    

    Casper包含实时脚本。现在安装程序(gnome版本)apt-get install ubiquity ubiquity-frontend-gtk或如果您想要KDE:

    apt-get install ubiquity ubiquity-frontend-kde
    
  6. 更新modules.dep和initramfs:

    depmod -a $(uname -r)
    update-initramfs -u -k $(uname -r)
    
  7. 删除非系统用户-不用担心,我们已将设置和数据复制到用户的“骨架”中。这意味着所有新用户都将拥有它们。

    for i in `cat /etc/passwd | awk -F":" '{print $1}'`
    do
        uid=`cat /etc/passwd | grep "^${i}:" | awk -F":" '{print $3}'`
        [ "$uid" -gt "999" -a  "$uid" -ne "65534"  ] && userdel --force ${i} 2>/dev/null
    done
    
  8. 清理:

    apt-get clean
    find /var/log -regex '.*?[0-9].*?' -exec rm -v {} \;
    find /var/log -type f | while read file
    do
        cat /dev/null | tee $file
    done
    rm /etc/resolv.conf /etc/hostname
    
  9. 退出chroot。 exit

  10. 现在,我们复制内核:

    export kversion=`cd ${WORK}/rootfs/boot && ls -1 vmlinuz-* | tail -1 | sed 's@vmlinuz-@@'`
    sudo cp -vp ${WORK}/rootfs/boot/vmlinuz-${kversion} ${CD}/boot/vmlinuz
    sudo cp -vp ${WORK}/rootfs/boot/initrd.img-${kversion} ${CD}/boot/initrd.img
    sudo cp -vp ${WORK}/rootfs/boot/memtest86+.bin ${CD}/boot
    
  11. 这样安装程序就不会安装casper之类的东西:

    sudo chroot ${WORK}/rootfs dpkg-query -W --showformat='${Package} ${Version}\n' | sudo tee ${CD}/${FS_DIR}/filesystem.manifest
    sudo cp -v ${CD}/${FS_DIR}/filesystem.manifest{,-desktop}
    REMOVE='ubiquity casper user-setup os-prober libdebian-installer4'
    for i in $REMOVE 
    do
        sudo sed -i "/${i}/d" ${CD}/${FS_DIR}/filesystem.manifest-desktop
    done        
    
  12. 卸载我们已挂载的内容:

    sudo umount ${WORK}/rootfs/proc
    sudo umount ${WORK}/rootfs/sys
    sudo umount ${WORK}/rootfs/dev/pts
    sudo umount ${WORK}/rootfs/dev
    
  13. 转换为squashfs:

    sudo mksquashfs ${WORK}/rootfs ${CD}/${FS_DIR}/filesystem.${FORMAT}
    
  14. 制作filesystem.size: echo -n $(sudo du -s --block-size=1 ${WORK}/rootfs | tail -1 | awk '{print $1}') | sudo tee ${CD}/casper/filesystem.size

  15. 和md5: find ${CD} -type f -print0 | xargs -0 md5sum | sed "s@${CD}@.@" | grep -v md5sum.txt |sudo tee ${CD}/md5sum.txt

  16. 现在grub.cfg:

    sudo nano ${CD}/boot/grub/grub.cfg
    

    (用您的收藏夹文本编辑器替换nano,没关系)粘贴并保存:

    set default="0"
    set timeout=10
    
    menuentry "Ubuntu GUI" {
    linux /boot/vmlinuz boot=casper quiet splash
    initrd /boot/initrd.img
    }
    
    
    menuentry "Ubuntu in safe mode" {
    linux /boot/vmlinuz boot=casper xforcevesa quiet splash
    initrd /boot/initrd.img
    }
    
    
    menuentry "Ubuntu CLI" {
    linux /boot/vmlinuz boot=casper textonly quiet splash
    initrd /boot/initrd.img
    }
    
    
    menuentry "Ubuntu GUI persistent mode" {
    linux /boot/vmlinuz boot=casper boot=casper persistent quiet splash
    initrd /boot/initrd.img
    }
    
    
    menuentry "Ubuntu GUI from RAM" {
    linux /boot/vmlinuz boot=casper nopersistent toram quiet splash
    initrd /boot/initrd.img
    }
    
    menuentry "Check Disk for Defects" {
    linux /boot/vmlinuz boot=casper integrity-check quiet splash
    initrd /boot/initrd.img
    }
    
    
    menuentry "Memory Test" {
    linux16 /boot/memtest86+.bin
    }
    
    
    menuentry "Boot from the first hard disk" {
    set root=(hd0)
    chainloader +1
    }
    
  17. 制作CD / DVD! sudo grub-mkrescue -o ~/live-cd.iso ${CD}

  18. 使用虚拟机进行测试!

一切归功于capink,因为该指南是从这里开始的


@ nickguletskii-既然我完全是新手,是否有任何软件可以做到这一点?顺便谢谢您的回复。
2011年

@Avinash remastersys和/或Ubuntu自定义工具包。
乌里埃雷拉(Uri Herrera)

@Avinash Sonawane这几乎是一个简单的“复制和粘贴”例程,只需执行命令并执行它们即可。
nickguletskii 2011年

因为我完全是一个新手,所以我更喜欢Remastersys而不仅仅是复制n粘贴和太多的命令。通过这些命令的工作方式。:)谢谢@nickguletskii :)
Avinash Sonawane 2011年

@Avinash Sonawane没问题,感谢您的验证!:)
nickguletskii 2011年

5

在中国,一些朋友在Ubuntu中使用ucloner备份操作系统。

https://code.google.com/p/ucloner/

UCloner是为Ubuntu Linux设计的备份/还原/克隆工具。在某种程度上,它就像Windows的Norton Ghost。

使用UCloner,您可以将Ubuntu系统备份到squashfs映像文件。您可以直接从该映像文件将PC引导至所谓的“ Live Ubuntu”环境(需要“ casper”软件包)。

活动的ubuntu系统可以在UCloner的帮助下将其自身克隆到某个目标分区中。还记得Matrix中的Smith特工吗?是的,就是这样。

它同时具有命令行和图形界面。在命令行界面中运行时更加灵活。

UCloner是免费软件,根据GPL v2发行。

在此处输入图片说明


3

如果您在单个硬盘上安装了Ubuntu,并且又有另一个具有相同或更大存储容量的硬盘,那么克隆磁盘真的很简单:

sudo dd if=/<from disk> of=<to disk>

因此,例如,如果要将sda克隆到sdb,则可以这样做sudo dd if=/dev/sda of=/dev/sdb。那将保留所有分区,启动管理器等。

请小心使用正确的if(输入文件)和of(输出文件)。输入文件是要复制的磁盘。如果切换顺序,则将空磁盘克隆到完整磁盘上,这将为您留出两个空白磁盘。:)

另外,请确保新磁盘具有足够的空间来克隆第一个磁盘。否则,最后将其切掉。不会有警告。

如果要创建图像,则只需替换of=/dev/sdbof=/some_place/disk-image.raw。将其存储在另一个磁盘上。


我没有任何额外的外部硬盘。我只想将整个操作系统以及所有更新,驱动程序还原或备份到单个.iso文件中。这样,当我格式化磁盘并重新安装Ubuntu时,我就不会下载并重新安装大量数据(软件,驱动程序等)
Avinash Sonawane 2011年

当然。然后,正如我在最后一行所说:dd if = / dev / disktobackup of = somefile.img。那将是磁盘的完整副本,因此您将不得不将其存储在某处。之所以称为ISO文件,是因为CD-ROM上使用了ISO9660文件系统。在对硬盘进行映像时,通常将它们称为raw或img或其他名称。
2011年

@ jo-erlend,这样它可以从一个分区移动到另一个分区吗?引导程序和各种各样的东西?
哈里KT

1

我有一个脚本,可将Ubuntu安装迁移到另一个位置,例如,您可以将其迁移到外部硬盘驱动器。整洁的事情是,您可以在格式化旧驱动器之前独立引导它并确认它可以工作。这是一份精确的副本-无需配置,重新安装或调整。您只需要准备目标分区。(它也不会修改当前安装,因此您可以在格式化旧版本之前测试迁移的版本。)

http://ubuntuforums.org/showthread.php?t=1519354

(是的,这是五笔迁移,但它也进行常规迁移。我一直使用它来备份和还原不同的安装)


1

获得所有数据并重新安装后,您可能想尝试使用Clonezilla拍摄操作系统映像。如果出现问题,只需弹出OS映像,即可将系统恢复到原来的状态。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.