当前位置: 首页>>技术教程>>正文


如何备份已安装软件包的设置和列表

, ,

问题描述

如果我想对自从全新安装Ubuntu以来所做的所有工作进行备份,那么可能的选择是什么?我应该备份什么?我想获得所有我更改的设置,我安装的所有软件包等。

最佳解决思路

Programs

备份程序列表的快速方法是运行此操作:

dpkg --get-selections > ~/Package.list
sudo cp -R /etc/apt/sources.list* ~/
sudo apt-key exportall > ~/Repo.keys

它会以dpkg可以读取的格式备份它们,用于重新安装后,如下所示:

sudo apt-key add ~/Repo.keys
sudo cp -R ~/sources.list* /etc/apt/
sudo apt-get update
sudo apt-get install dselect
sudo dselect update
sudo dpkg --set-selections < ~/Package.list
sudo apt-get dselect-upgrade -y

*您可能必须更新dpkg的可用软件包列表,否则它将忽略您的选择(有关更多信息,请参阅this debian bug)。您应该在sudo dpkg --set-selections < ~/Package.list之前执行此操作,如下所示:

apt-cache dumpavail > ~/temp_avail
sudo dpkg --merge-avail ~/temp_avail
rm ~/temp_avail

设置和个人数据

在重新安装之前,您应该备份一些程序中的设置,这可以通过抓取/etc中的文件夹和用户目录中的所有内容(而不仅仅是您可以在 nautilus 中看到的内容)轻松完成:

rsync --progress /home/`whoami` /path/to/user/profile/backup/here

重新安装后,您可以使用以下命令恢复它:

rsync --progress /path/to/user/profile/backup/here /home/`whoami`

所有这些都作为pseudo-bash脚本一起使用。

这假定机器上只有一个用户(否则删除/'whoami'),并且您在两次安装中都使用相同的用户名(否则,请修改rsync的目标位置)。

dpkg --get-selections > ~/Package.list
sudo cp -R /etc/apt/sources.list* ~/
sudo apt-key exportall > ~/Repo.keys
rsync --progress /home/`whoami` /path/to/user/profile/backup/here

##  Reinstall now

rsync --progress /path/to/user/profile/backup/here /home/`whoami`
sudo apt-key add ~/Repo.keys
sudo cp -R ~/sources.list* /etc/apt/
sudo apt-get update
sudo apt-get install dselect
sudo dpkg --set-selections < ~/Package.list
sudo dselect

次佳解决思路

这是谁的原因:对他们的计算机有正常使用习惯的用户,在他们的主文件夹之外完成了最少或者没有配置的用户,并没有搞乱启动脚本和服务。用户希望将他的软件恢复到安装完所有自定义并保存在主文件夹中时的状态。

谁不适合:服务器极客,带有源代码安装软件的高级用户(恢复软件包列表可能会破坏您的系统),已更改某些应用程序的启动脚本以更好地满足其需求的用户。小心:家中以外的任何修改都有可能被重写。

备份您当前的软件包和用户设置


一旦准备好系统并且对安装的软件满意,可以使用命令dpkg --get-selections获取已安装软件包的列表,并将输出保存到日志文件中。

在家中创建一个backup文件夹

sudo mkdir ~/backup

保存当前安装的软件包列表

dpkg --get-selections > ~/backup/installed_packages.log

备份你的apt源文件

sudo cp /etc/apt/sources.list ~/backup/sources.bak

和apt的可信密钥列表的副本

sudo apt-key exportall > ~/backup/repositories.keys

使用Ubuntu中的集成备份工具Deja-dup备份您的个人文件夹。

  • 设置备份文件夹

package-management,backup,ubuntu

  • 验证它是否会备份您的主文件夹并添加您可能不需要的任何文件夹,例如Trash文件夹

package-management,backup,ubuntu

  • 在概览选项卡上,按立即备份以备份您的个人文件夹

package-management,backup,ubuntu

  • 备份工具会询问您是否要将密码添加到备份中,您的选择。按下继续后,您的备份将开始

package-management,backup,ubuntu

完成此操作后,您将拥有相对于用户的软件包和配置文件的备份。如果有必要,您可以从~/backup文件夹恢复文件。

恢复备份


首先从备份中恢复源文件

sudo cp ~/backup/sources.bak /etc/apt/sources.list

backed-up键

sudo apt-key add ~/backup/repositories.keys

更新您的来源列表

sudo apt-get update

从保存的installed_packages.log中恢复软件包

sudo dpkg --clear-selections
sudo dpkg --set-selections < ~/backup/installed_packages.log && sudo apt-get dselect-upgrade

sudo dpkg --clear-selections将标记所有已安装的要删除的软件包,这样,当您恢复保存的软件包列表时,不在列表中的软件包将从您的系统中删除。

从您的家中删除当前配置,创建当前状态下文件夹的备份(毕竟,如果还有其他可能影响配置的文件,那么恢复新文件有什么用处?)

mkdir ~/.old-gnome-config/ && mv ~/.gnome* ~/.old-gnome-config/ && mv ~/.gconf* ~/.old-gnome-config/ && mv ~/.metacity ~/.old-gnome-config/ && mv ~/.cache ~/.old-gnome-config/ && mv ~/.dbus ~/.old-gnome-config/ && mv ~/.dmrc ~/.old-gnome-config/ && mv ~/.mission-control ~/.old-gnome-config/ && mv ~/.thumbnails ~/.old-gnome-config/   && ~/.config/dconf/* ~/.old-gnome-config/

完成此操作后,恢复使用Deja-dup创建的备份。

  • 打开备份工具,然后在概览选项卡上按恢复

package-management,backup,ubuntu

  • 按照提示将文件恢复到原始位置

package-management,backup,ubuntu

完成后,你将把你的软件包恢复到保存的选择,我们的配置恢复,并希望工作桌面,所有这些都没有安装一个额外的应用程序,并使用Ubuntu的默认工具。

唯一剩下的就是做一些清理工作,并检查一切正常。

出了点问题,我的桌面消失了


Ask Ubuntu中有几篇文章可以指导您解决错误时需要重置桌面的问题。如果出现错误,并且您发现自己需要这样做,请查看这些帖子:

第三种解决思路

备份需要一些计划,并有几个可行的策略。你将不得不决定哪种方法最适合你。

注意”best way”,对一个人来说最好的办法可能不适合另一个人。

在一天结束时,”best method”已经过测试并且已知可以正常工作。您需要在测试之前测试您的备份策略

使用图像

一种方法是简单地复制和压缩分区的映像。你可以用几种工具来完成这个任务,从dd到partimage到clonezilla

partimage clonezilla

这种策略的优点是(相对)简单而且非常完整。缺点是备份图像很大。

较小的备份

您只需备份数据和设置即可制作较小的备份。有几种工具可以做到这一点,从dd到tar到rsync的所有内容。

这里的关键是知道你需要备份什么。

优势 – 备份将更小。缺点 – 这是一种手动方法,因此很容易忘记关键文件(/etc /passwd)。

总是需要检查清单内容,以确保清单完整。

1)已安装软件包的列表

软件包列表#为所有apt-get安装的软件包#创建一个文本列表,以便在新安装的发行版中为re-install

# make the list
[old distro] sudo dpkg --get-selections > packages

然后,您将执行全新安装,并恢复您的软件包。以下命令还会更新系统上的所有软件包(以便一次恢复并全部更新)。

# Now put them back on the new distro
[new distro] sudo dpkg --set-selections < packages

[new distro] sudo apt-get dselect-upgrade

2)数据。通常这将是/home。大多数用户数据和定制都将位于用户主目录中。如果您将数据保存在其他位置,请包含该数据(例如/媒体/数据)。

3)系统设置。这里将会出现一些变化。就我个人而言,如果我编辑任何系统设置,我将原始配置文件和我的自定义文件保存在/root中。因此,例如,如果我编辑/etc/fstab,请在/root/etc/fstab.orig中保留/root /etc /fstab中的原始文件和原始文件

你还需要/etc /passwd,/etc /shadow,/etc /group,/etc /sudoers,/etc /hostname和/etc /hosts(如果我忘记了某些东西,你可能需要更多/etc /它)

在服务器上,您可能需要包含/var/www或其他数据目录。

我知道这需要一些努力,所以,包含所有/etc可能会更容易。

4)您的磁盘分区表的副本​​。

sudo fdisk -l > fdisk.bak

如果更换硬盘驱动器,则可以使用此信息来恢复分区表。

5)你的MBR的副本

dd if=/dev/sda of=MBR.bak bs=512 count=1

然后你会恢复

dd if=MBR.bak of=/dev/sda bs=512 count=1

6)其他文件/目录 – 根据您的系统和定制,您可能需要包含其他目录。注意事项可能包括/opt/usr/local,/usr /share`和/或您的.desktop文件。您在apt-get或软件管理器之外下载或定制的任何系统。

7)将所有这些放入档案中

tar -cvpzf backup.tar.gz /home /root /etc ./MBR.bak ./fsdisk.bak ./packages

8)rsync

作为焦油的替代品,您可以使用rsync。

参见 – https://help.ubuntu.com/community/rsync

网络备份

另一种选择是使用NFS或Samba来备份数据。

Cron

您可以通过编写备份脚本并使用cron运行它(每天/每小时)来自动执行备份。

Restore

1)使用live CD,使用gparted或fdisk从fdisk.bak中的信息恢复分区2)安装Ubuntu。 3)开始你的新安装,更新你的软件包。 4)恢复你的数据和设置

tar -xvpzf /home/test/backup.tar.gz -C / 

然后重启

另见 – https://help.ubuntu.com/community/BackupYourSystem/TAR

其他策略

还有很多额外的备份策略,一些用于备份您的主目录,一些是图形化的。

请参阅:https://help.ubuntu.com/community/BackupYourSystem

Testing

除非经过测试,否则不是备份。当您不使用根分区的映像时,这是最重要的。

测试在虚拟机,备用计算机或备用分区或硬盘驱动器上恢复系统。

第四种思路

使用apt-clone安装软件包选择

APT-Clone. This package can be used to clone/restore the packages on a apt based system. It will save/restore the packages, sources.list, keyring and automatic-installed states. It can also save/restore no longer downloadable packages using dpkg-repack.

APT-Clone由ubiquity(Ubuntu安装程序)用于升级过程。

  1. 安装

    sudo apt-get install apt-clone
    
  2. 进行备份

    sudo apt-clone clone path-to/apt-clone-state-ubuntu-$(lsb_release -sr)-$(date +%F).tar.gz
    
  3. 恢复备份

    sudo apt-clone restore path-to/apt-clone-state-ubuntu.tar.gz
    

    恢复到较新版本:

    sudo apt-clone restore-new-distro path-to/apt-clone-state-ubuntu.tar.gz $(lsb_release -sc)
    

参考:man apt-clone


主页数据,配置/etc,..使用duplicity

Duplicity backs directories by producing encrypted tar-format volumes and uploading them to a remote or local file server. Because duplicity uses librsync, the incremental archives are space efficient and only record the parts of files that have changed since the last backup. Because duplicity uses GnuPG to encrypt and/or sign these archives, they will be safe from spying and/or modification by the server.

  1. 安装

    sudo apt-get install duplicity
    
  2. 备用

    duplicity full path-to/source_folder/ file:///path_to/duplicity_backups/
    

    或增量备份(它只会备份与上次备份的区别):

    duplicity incremental path-to/source_folder/ file:///path_to/duplicity_backups/
    
  3. 恢复

    duplicity restore file:///path_to/duplicity_backups/ path-to/target_folder/
    

参考:man duplicity

第五种思路

虽然这个问题已经回答了一段时间,但我注意到没有人提到etckeeper。运行apt-get install etckeeper,在/etc/etckeeper/etckeeper.conf中配置你的VCS,然后你就可以更好地控制/etc目录。这也可以用来恢复/etc目录下的配置。

例如(假设您将git配置为您的VCS)备份您的/etc/.git目录。无论何时您需要将配置恢复到新鲜的/etc目录,您都可以将backed-up /etc/.git目录复制到新鲜的/etc目录中。你现在有很多选择来管理你的修复:

  • 查看差异

    • git diff

  • 将所有差异保存在git分支中的”fresh”目录中

    • git checkout -b new; git add -A; git commit -m 'new etc'

  • 无条件地还原到您的备份

    • git clean -f

第六种思路

对于那些想要一个很好的。整洁的GUI …

…介绍Aptik。

您只需要一个备份目录,存储在本地或云端。 Aptik将备份PPA,下载的软件包,软件选择,应用程序设置以及主题和图标。很有用。

你可以通过ppa安装它:

sudo apt-add-repository –y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install aptik

package-management,backup,ubuntu

希望这有助于:)

第七种思路

要创建所有已安装程序的备份列表:http://savvyadmin.com/backup-and-restore-package-lists-in-ubuntu/您显然需要备份一些已安装软件包的软件源:Backup Software Sources

至于您的程序设置,其中大部分都隐藏在您的主文件夹中(从.开始)文件夹和文件。我只是将它们全部备份。

第八种思路

I want to have ready-to-restore apps and their data, also offline.

这违背了”format-and-install”的目的。如果你想这样做,只需从现有的Ubuntu安装升级即可。

由于Ubuntu中的”installation”与进入软件中心(或Synaptic或apt-get)一样简单,而且大多数程序本身都会经常更新,所以在备份程序,重新安装Ubuntu,然后从备份安装而非仅仅获取存储库中的最新版本。

只要你的数据和程序设置得到了备份,你应该没问题。如果您仍然需要系统中所有内容的全面列表,只需进入终端并键入dpkg --list > mypackages.txt,然后将该文本文件放在安全的位置 – 它包含您当前系统上安装的所有软件包。

第九种思路

我会认为这是一个新的硬盘,固态硬盘或新系统,或者你曾经在一个旧的Ubuntu上。现在你想升级到Ubuntu 12.04(精确穿山甲)?

我会假设你厌恶再次安装它们或重新配置?无需。

Ctrl + Alt + T打开终端,然后运行以下命令:

sudo dpkg --get-selections > app-backup-list.txt

然后通过以下方式将文本文件复制到您的主目录:

sudo cp app-backup-list.txt /home/username

接下来从侧边栏的系统设置中运行备份应用程序。

/home备份到Ubuntu One,闪存盘,软盘(oops scratch)或刻录到CD或系统或外部HDD驱动器中的其他HDD上,或使用任何您想要的备份程序。

然后使用恢复来反转备份,选择您使用的备份程序,然后\ home返回。

最后,反转dkpg命令:

sudo dpkg --get-selections < app-backup-list.txt
sudo apt-get -y update
sudo apt-get dselect-upgrade

注意:

恢复主页,获取应用程序的所有设置。我安装了SSD,并复制了所有文件,但我仍然做了备份以防万一。

PS:这样可以避免,实际备份大量应用程序的机器代码等。确保您的下载文件夹干净。未装满机器代码或视频,然后使用k3B将download文件夹刻录到DVD。

第十种思路

如果存储空间不是问题,则使用dd或dc3dd将绝对备份您指定的目标磁盘或分区上的所有内容。您不希望在装入的驱动器上尝试此操作,因此您可以通过可启动的USB或DVD(或安装介质选择”Try Ubuntu”)来执行此操作:

sudo dd if=/dev/<source> of=/path/<target>.img

您希望备份的磁盘或分区在哪里,目标是备份文件名(通常相同)(sdasda1)。

如果您需要进度报告,请将dc3dd替换为dd。要访问备份中的特定文件,通常可以将生成的.img文件作为循环设备安装:

mount -o loop,ro,offset=32256 filename.img /mnt/dir这适用于具有备份整个驱动器的单个分区的驱动器。

或者mount -o loop,ro filename.img /mnt/dir如果你备份了一个分区。

您可以通过交换if =和of =参数来恢复整个磁盘或分区,如下所示:

sudo dd if=/path/<source>.img of=/dev/<target>

您希望恢复的图像文件在哪里,< target>是您希望将其还原到的驱动器或分区。

优点:易于备份,易于恢复一切。与其他一些解决方案不同,它们在规划方面并没有太多要求,因为您正在备份所有内容,您不必担心是否需要它。

缺点:耗时(计算机时间,不是你的),不适合每日备份(无增量选项)

来源:经验;我在开始工作之前使用这种方法来备份客户端系统,并且从未丢失过一些客户端数据。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/136.html,未经允许,请勿转载。