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


279

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


1
没有人提到:sudo dpkg -l > installed_software.txt
iammilind

4
@iammilind可能是因为 dpkg --get-selections解决方案可以解决此问题。
belacqua 2014年

但是请警惕此错误:bugs.launchpad.net/ubuntu/+source/policykit-desktop-privileges / ...我尝试了最受好评的解决方案,但由于该错误而使其无法正常工作。(这可能更适合作为评论,但我没有足够的声誉来发表评论)
Jonathan

2
还请注意,如果要在较新版本的OS中进行还原,则某些设置可能不完整甚至冲突,从而可能使某些应用程序出现故障。
Aquarius Power

Answers:


296

程式

备份程序列表的一种快速方法是运行以下命令:

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可用软件包的列表,否则它将忽略您的选择(有关更多信息,请参见此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`

因此,所有这些都作为伪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

2
这不适用于ubuntu 12.10。它说,dpkg: warning: package not in database at line XXX: xrdp而且也没有通过包名“D选择”
confiq

1
@confiq检查以上三个评论
Huckle

1
等等...要解决dpkg警告,请阅读以下内容:forums.debian.net/viewtopic.php?f=
t

3
记住要备份并重新添加sources.d目录-ppa特别是会将那里的源信息堆放在那里的单独文件中。没有它们,重新安装将失败。
气球

2
已还原。由于未还原所有与DesktopEnv相关的设置(启动器,动画,compiz调整,桌面背景)而感到失望。女主人:所有人都住在dconf中!解决方案:在GUI中,Log Out通过主菜单栏中的齿轮图标。然后通过切换到CLI CTRL-ALT-F1。从备份中还原.config / dconf / user。通过切换回GUI CTRL-ALT-F7,再次登录。瞧:您所有与Unity相关的设置都将再次生效!尝试尝试的解释:在活动的Unity GUI会话中,dconf文件可能被锁定或忽略,因此您需要切换到纯CLI模式?
porg 2014年

48

这是谁的用途:那些通常可以正常使用其计算机,或者在主文件夹之外进行很少或没有任何配置的用户,不会破坏启动脚本和服务。想要将其软件还原到安装了所有自定义内容并保存在其主文件夹中的软件后的用户。

这不适合哪些用户服务器极客,按源安装软件的高级用户(恢复软件包列表可能会破坏您的系统),更改某些应用程序的启动脚本以更好地满足他们的需求的用户。注意:家庭以外的任何修改很有可能会被覆盖。

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


准备好系统并满意安装的软件后,您可以使用该命令获取已安装软件包的列表,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对主文件夹进行备份。

  • 设置备份文件夹

在此处输入图片说明

  • 验证它会备份您的主文件夹并添加您可能不需要的所有文件夹,例如该Trash文件夹

在此处输入图片说明

  • 在概述选项卡上,按立即备份以备份主文件夹

在此处输入图片说明

  • 备份工具将询问您是否要向备份添加密码,由您选择。按继续后,备份将开始

在此处输入图片说明

完成此操作后,您将拥有与用户相关的软件包和配置文件的备份。如有必要,您将能够从~/backup文件夹中还原文件。

恢复备份


首先从制作的备份中还原源文件

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

备份键

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创建的备份。

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

在此处输入图片说明

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

在此处输入图片说明

完成此操作后,您将把软件包返回保存的选择,恢复我们的配置,并希望它能在工作的台式机上运行,​​而所有这些都无需安装单个额外的应用程序并使用Ubuntu默认工具。

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

出问题了,我的桌面不见了


Ask Ubuntu中有几篇文章可以指导您,以防万一出现错误并且您需要硬重置桌面。如果出现错误,而您发现自己需要这样做,请查看以下帖子:


28

备份需要一些计划,有几种可行的策略。您将必须决定哪种方法最适合您。

对“最佳方式”要小心,对一个人最有效的方法对另一个人可能不是最佳的。

归根结底,“最佳方法”是一种已经过测试并且已知有效的方法。您需要先测试备份策略

使用图像

一种方法是简单地复制和压缩分区的映像。您可以使用多种工具执行此操作,从dd到partimage到clonezilla

partimage
clonezilla

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

较小的备份

您可以仅通过备份数据和设置来进行较小的备份。有几种工具可以做到这一点,从dd到tar再到rsync的所有内容。

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

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

总是需要审核要备份的清单,以确保清单完整。

1)已安装软件包列表

软件包列表#创建所有apt-get已安装软件包的现有安装的文本列表#为了重新安装在新安装的发行版上

# 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。大多数用户数据和自定义项将位于用户的主目录中。如果将数据保存在其他位置,请包括该位置(例如/ media / data)。

3)系统设置。这是会有一些变化的地方。就个人而言,如果我编辑ANY系统设置,我会将原始配置文件和自定义文件的副本保存在/ root中。因此/etc/fstab,例如,如果我进行编辑,请将副本保留在/ root / etc / fstab中,将原始副本保留在/root/etc/fstab.orig中

您还需要/etc/passwd/etc/shadow/etc/group/etc/sudoers/etc/hostname,和/etc/hosts(可能需要更多的在/ etc,如果我忘了什么事,我将它添加)

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

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

4)磁盘分区表的副本。

sudo fdisk -l > fdisk.bak

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

5)您的MBR副本

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

然后,您将使用

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

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

7)将所有内容放入存档

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

8)rsync

作为tar的替代,您可以使用rsync。

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

网络备份

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

克朗

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

恢复

1)使用实时CD,从fdisk.bak中的信息使用gparted或fdisk恢复分区
。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

测试中

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

测试在VM,备用计算机,备用分区或硬盘驱动器中还原系统的能力。


1
好答案!另外,来自PartImage网站:PartImage不支持Ext4分区,而Ubuntu默认为Ext4文件系统格式。有人告诉我PartClone(确实支持Ext4)是一个很好的选择。您可能还需要研究CloneZilla。
古森林卡米2015年

22

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

APT克隆。该软件包可用于在基于apt的系统上克隆/恢复这些软件包。它将保存/恢复软件包,sources.list,密钥环和自动安装状态。它还可以使用dpkg-repack保存/恢复不再下载的软件包。

ubiquity(Ubuntu安装程序)将APT克隆用于升级过程。

  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通过生成加密的tar格式卷并将其上载到远程或本地文件服务器来备份目录。由于重复性使用librsync,因此增量存档具有空间效率,并且仅记录自上次备份以来已更改的文件部分。由于双重性使用GnuPG加密和/或签名这些档案,因此它们不会受到服务器的监视和/或修改。

  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


9
APT-Clone比该dpkg --get-selections解决方案要好得多,因为:1.它保留了所有存储库信息; 2.跟踪自动安装了哪些软件包; 3.允许重新打包本地安装的DEB文件。这应该是公认的答案!
Andrea Lazzarotto 2014年

1
这很棒!我希望这些功能可以在16.04中使用,这正是我想要的。但是我想知道,Apt-Clone是否还会删除不在还原配置中的软件包?
多里安

@XToro,不,它不会删除。(顺便说一句,如果默认情况下删除软件包,将会损坏升级,因为大多数升级都安装了新软件包,而有些删除了)
user.dz 2016年

1
@Sneetsher太可惜了。我实际上想要的是,如果它删除了列表中未列出的所有软件包,然后安装列出的软件包及其依赖项。我为什么要使用它的问题是,在像安装新的DE之类的东西玩完之后要删除不需要的软件包。删除DE之后,总会有大量剩余物。
多里安

@XToro,我喜欢,我之前需要它,但是我通过在虚拟盒子中进行测试来解决这个问题。您需要从Huckle的答案中修改脚本 。最好提出新问题并在此问题中提及该问题。如果您因某些原因无法使用或不想要,我会这样做吗?
user.dz

15

尽管这个问题已经回答了一段时间,但我注意到没有人提到etckeeper。运行apt-get install etckeeper,在中配置VCS /etc/etckeeper/etckeeper.conf,从那时起,您将可以更好地控制/ etc目录。这可以用于还原/ etc目录中的配置。

例如,(假设您将git配置为VCS)备份/etc/.git目录。每当需要将配置恢复到新的/ etc时,都将备份的/etc/.git目录复制到新的/ etc目录中。现在,您有许多管理恢复的选项:

  • 查看差异
    • git diff
  • 将所有差异保留在git分支的“新鲜”目录中
    • git checkout -b new; git add -A; git commit -m 'new etc'
  • 无条件还原到您的备份
    • git clean -f

12

对于那些想要一个不错的。整洁的GUI ...

...介绍Aptik。

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

您可以通过ppa安装它:

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

希望这会有所帮助:)


2
sudo apt-add-repository –y ppa:teejee2008/ppa应该是sudo apt-add-repository ppa:teejee2008/ppa。仅接受一个论点。
erm3nda

1
对于想要进行可选的系统范围和用户备份的用户来说,这是最现实的选择。顺便说一句,当前版本支持的设置比该屏幕快照中显示的设置更多。
erm3nda

如何以aptik作为GUI运行?我刚刚使用提供的命令安装了它,它似乎可以作为控制台实用程序运行,在“显示应用程序”菜单中不可用。您可以在您的帖子中修复aptik repo,顺便说一句。
WebComer

在Ubuntu中,为GUI前端安装aptik-gtk
Tim Richardson


3

如果不关心存储空间,则使用dd或dc3dd绝对可以备份您指定的目标磁盘或分区上的所有内容。您不想在已安装的驱动器上尝试此操作,因此可以通过可引导的USB或DVD(或选择“尝试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>

您要还原的映像文件在哪里,<目标>是您要将其还原到的驱动器或分区。

优点:易于备份,易于还原所有内容。与其他解决方案不同的是,由于您要备份所有内容,因此不必真正计划什么,因为您不必担心是否需要它。

缺点:耗时(计算机时间,不是您的时间)并且不适合日常备份(没有增量选项)

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


2

我想拥有可随时还原的应用程序及其数据,也可以脱机使用。

这违背了“格式化并安装”的目的。如果要这样做,只需从现有的Ubuntu安装中进行升级即可。

由于在Ubuntu中进行“安装”就像进入软件中心(或Synaptic或apt-get)一样简单,并且大多数程序本身都会经常更新,因此备份程序,重新安装Ubuntu并从备份中安装并没有真正意义。从存储库中获取最新版本。

只要备份数据和程序设置,就可以了。如果您仍然想要系统中所有内容的完整列表,以便知道是否缺少软件包,只需进入终端并输入dpkg --list > mypackages.txt,然后将该文本文件放在安全的位置即可-包含当前系统上已安装的每个软件包。


2

我假设它是新的HDD,SSD或新系统,或者您使用的是旧版Ubuntu。现在您要升级到Ubuntu 12.04(精确的穿山甲)吗?

我假设您讨厌再次安装它们或重新配置它们?没有必要。

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

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

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

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

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

备份/home到Ubuntu One,闪存棒,软盘(会刮花)或刻录到CD或系统或外部HDD驱动器中的其他HDD上,或使用所需的任何备份程序。

然后使用restore还原备份,选择您使用的备份程序,现在\ home回来了。

最后,反转dkpg命令:

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

注意事项

恢复首页,即可获取应用程序的所有设置。我安装了SSD,并复制了所有文件,但是为了以防万一,我仍然进行了备份。

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


1

我找到了另一个解决方案:

APTonCD。它将备份您所有的应用程序,并将它们放入ISO映像中。


0

我发现最简单的过程是使用两个程序:

在时间上备份/ home和/ etc

Aptik备份程序


0

编辑:

根据用户@Izzy,此答案不再起作用


我上面有同样的问题!然后我找到了这个网站:

点击这里

我将复制网站上的内容以备份程序:

除了备份/ home分区外,我还使用Synaptic软件包管理器定期创建所有已安装软件包(应用程序及其依赖性)的备份列表。为此,您需要使用基于Ubuntu的发行版或使用Synaptic的发行版。在其他使用不同程序包管理器的发行版中,我不熟悉此操作。但是在Bodhi Linux,Linux Mint或任何其他Ubuntu / Debian衍生产品中,只需打开Synaptic;转到文件>保存标记。确保选中显示“保存完整状态,不仅更改”的小框,然后将该文件保存到所需的位置(最好是保存/ home备份的位置)。然后,当您需要重新安装操作系统时,应用所有更新后,可以打开Synaptic,转到“文件”>“读取标记”,然后选择保存的“软件包”文件。只要您连接到互联网,它就会自动下载并安装所有您最初安装的应用程序和其他软件包。这无疑节省了很多时间和麻烦,因此您不必搜索并重新安装所有应用程序

干杯


这似乎不再可行。刚刚在Ubuntu 12.04计算机上进行了检查:“保存标记”上没有对话框。使用“将标记另存为”,我得到一个空文件。提示:“标记”是您刚刚标记为安装/更新但尚未安装/更新的软件包。因此它不适用于创建备份列表。
Izzy

@Izzy感谢您告诉我。我更新了答案
Suhaib

谢谢,Suhaib –但是,您可以交叉检查吗?也许只是我,或者我读错了什么?
Izzy

-1

要使用GUI备份所有已安装的软件包,可以使用Ubuntu软件中心。进入菜单(然后登录)并同步所有软件包。当您需要重新安装时,请从计算机中选择所有软件包,然后从同一菜单中单击“安装”。

在命令行(CLI)中,您也可以使用OneConf(oneconf)。

我没有检查一年;也许现在它有更多选项,例如某些设置,而不是仅列出备份的软件包。


2
您能确认一下吗?
Braiam 2013年
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.