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

n1k*_*1lp 312 package-management backup

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

Huc*_*kle 326

程式

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

dpkg --get-selections > ~/Package.list
sudo cp -R /etc/apt/sources.list* ~/
sudo apt-key exportall > ~/Repo.keys
Run Code Online (Sandbox Code Playgroud)

它将以 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
Run Code Online (Sandbox Code Playgroud)

*您可能需要更新 dpkg 的可用软件包列表,否则它会忽略您的选择(有关更多信息,请参阅此 debian 错误)。你应该这样做之前sudo dpkg --set-selections < ~/Package.list,像这样:

apt-cache dumpavail > ~/temp_avail
sudo dpkg --merge-avail ~/temp_avail
rm ~/temp_avail
Run Code Online (Sandbox Code Playgroud)

设置和个人数据

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

rsync --progress /home/`whoami` /path/to/user/profile/backup/here
Run Code Online (Sandbox Code Playgroud)

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

rsync --progress /path/to/user/profile/backup/here /home/`whoami`
Run Code Online (Sandbox Code Playgroud)

所以所有这些都作为一个伪 bash 脚本。

这假设机器上只有一个用户(/'whoami'否则删除)并且您在两次安装中使用相同的用户名(否则修改 dest. of 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
Run Code Online (Sandbox Code Playgroud)

  • 记得备份并重新添加 sources.d 目录——ppa 尤其会将源信息堆放在那里的单独文件中。没有它们,重新安装将失败。 (3认同)
  • 这不适用于 ubuntu 12.10。它说``dpkg:警告:包不在数据库中的第XXX行:xrdp``并且没有名称为“dselect”的包 (2认同)
  • 恢复了。很失望,因为所有与 DesktopEnv 相关的设置(启动器、动画、compiz 调整、桌面背景)都没有恢复。Commoness:都驻留在dconf中!解决方案:在 GUI 中,通过主菜单栏中的齿轮图标“注销”。然后通过“CTRL-ALT-F1”切换到 CLI。从您的备份中恢复 .config/dconf/user。通过`CTRL-ALT-F7`切换回GUI,再次登录。瞧:您所有与 Unity 相关的设置再次生效!解释尝试:当活动的 Unity GUI 会话时,dconf 文件可能被锁定或忽略,因此您需要切换到纯 CLI 模式? (2认同)

Bru*_*ira 51

这是给谁的:正常使用计算机的用户,在他们的主文件夹外进行了最少的配置或没有配置,没有搞乱启动脚本和服务。想要将软件恢复到安装时的状态的用户,所有自定义都已完成并保存在其主文件夹中。

不适合的人群服务器极客、使用源代码安装软件的高级用户(恢复软件包列表可能会破坏您的系统)、已更改某些应用程序的启动脚本以更好地满足其需求的用户。注意:在家外进行的任何修改很有可能会被覆盖。

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


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

backup在您的家中创建一个文件夹

sudo mkdir ~/backup
Run Code Online (Sandbox Code Playgroud)

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

dpkg --get-selections > ~/backup/installed_packages.log
Run Code Online (Sandbox Code Playgroud)

备份您的 apt 源文件

sudo cp /etc/apt/sources.list ~/backup/sources.bak
Run Code Online (Sandbox Code Playgroud)

以及您的 apt 可信密钥列表的副本

sudo apt-key exportall > ~/backup/repositories.keys
Run Code Online (Sandbox Code Playgroud)

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

  • 设置备份文件夹

在此处输入图片说明

  • 确认它会备份您的主文件夹并添加您可能不想要的任何文件夹,例如Trash文件夹

在此处输入图片说明

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

在此处输入图片说明

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

在此处输入图片说明

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

恢复备份


首先从备份中恢复源文件

sudo cp ~/backup/sources.bak /etc/apt/sources.list
Run Code Online (Sandbox Code Playgroud)

备份的密钥

sudo apt-key add ~/backup/repositories.keys
Run Code Online (Sandbox Code Playgroud)

更新您的来源列表

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

从保存的包中恢复 installed_packages.log

sudo dpkg --clear-selections
sudo dpkg --set-selections < ~/backup/installed_packages.log && sudo apt-get dselect-upgrade
Run Code Online (Sandbox Code Playgroud)

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/
Run Code Online (Sandbox Code Playgroud)

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

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

在此处输入图片说明

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

在此处输入图片说明

完成此操作后,您会将您的包恢复到保存的选择中,我们的配置已恢复,希望桌面可以正常工作,所有这些都无需安装任何额外的应用程序并使用 Ubuntu 默认工具。

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

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


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


Pan*_*her 28

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

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

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

使用图像

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

部分镜像
克隆

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

较小的备份

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

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

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

始终需要审查要支持的内容列表,以确保列表完整。

1)已安装包列表

包列表 # 创建所有 apt-get 安装包的现有安装的文本列表 # 以便在新安装的发行版上重新安装

# make the list
[old distro] sudo dpkg --get-selections > packages
Run Code Online (Sandbox Code Playgroud)

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

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

[new distro] sudo apt-get dselect-upgrade
Run Code Online (Sandbox Code Playgroud)

2)数据。通常这将是 /home 。大多数用户数据和自定义将位于您的用户主目录中。如果您将数据保存在其他位置,请包括该位置(例如 /media/data)。

3)系统设置。这是会有一些变化的地方。就个人而言,如果我编辑任何系统设置,我都会在 /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
Run Code Online (Sandbox Code Playgroud)

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

5) 您的MBR副本

sudo dd if=/dev/sda of=MBR.bak bs=512 count=1
Run Code Online (Sandbox Code Playgroud)

然后你会用

sudo dd if=MBR.bak of=/dev/sda bs=512 count=1
Run Code Online (Sandbox Code Playgroud)

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

7)将所有内容放入存档

sudo tar -cvpzf backup.tar.gz /home /root /etc ./MBR.bak ./fsdisk.bak ./packages
Run Code Online (Sandbox Code Playgroud)

8)同步

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

请参阅 - https://help.ubuntu.com/community/rsync

网络备份

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

定时任务

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

恢复

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

tar -xvpzf /home/test/backup.tar.gz -C / 
Run Code Online (Sandbox Code Playgroud)

然后重启

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

其他策略

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

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

测试

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

测试在 VM、备用计算机、备用分区或硬盘驱动器中恢复系统。


use*_*.dz 26

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

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

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

  1. 安装

    sudo apt-get install apt-clone
    
    Run Code Online (Sandbox Code Playgroud)
  2. 进行备份

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

    sudo apt-clone restore path-to/apt-clone-state-ubuntu.tar.gz
    
    Run Code Online (Sandbox Code Playgroud)

    恢复到较新的版本:

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

参考: man apt-clone


家庭数据,配置/etc,.. 使用duplicity

Duplicity通过生成加密的 tar 格式卷并将它们上传到远程或本地文件服务器来支持目录。由于 duplicity 使用 librsync,增量归档节省空间,并且只记录自上次备份以来已更改的文件部分。因为 duplicity 使用 GnuPG 来加密和/或签署这些档案,所以它们不会被服务器监视和/或修改。

  1. 安装

    sudo apt-get install duplicity
    
    Run Code Online (Sandbox Code Playgroud)
  2. 备份

    duplicity full path-to/source_folder/ file:///path_to/duplicity_backups/
    
    Run Code Online (Sandbox Code Playgroud)

    或增量备份(它只会备份与上次备份的差异):

    duplicity incremental path-to/source_folder/ file:///path_to/duplicity_backups/
    
    Run Code Online (Sandbox Code Playgroud)
  3. 恢复

    duplicity restore file:///path_to/duplicity_backups/ path-to/target_folder/
    
    Run Code Online (Sandbox Code Playgroud)

参考: man duplicity

  • APT-Clone 比 `dpkg --get-selections` 解决方案好得多,因为: 1. 它保留所有存储库信息 2. 它跟踪自动安装的软件包 3. 它允许重新打包本地安装的 DEB 文件。这应该是公认的答案! (9认同)
  • 看来【_apt-clone_的主分支】(https://code.launchpad.net/~ubuntu-core-dev/apt-clone/trunk)已经快五年没有更新了。该软件包位于 20.04 Focal Fossa 存储库中,但该版本也[只有一个更新](http://changelogs.ubuntu.com/changelogs/pool/main/a/apt-clone/apt-clone_0.4.1ubuntu3/更改日志)在过去五年中(删除对 Python 2 的依赖)。所以这个解决方案可能已经过时了。 (2认同)

Edw*_*ach 18

虽然这个问题已经回答了一段时间,但我注意到没有人提到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


Tel*_*Why 12

对于那些想要一个美好的。整洁的图形用户界面...

...介绍Aptik。

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

您可以通过 ppa 安装它:

sudo apt-add-repository –y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install aptik
Run Code Online (Sandbox Code Playgroud)

希望这会有所帮助:)

  • `sudo apt-add-repository –y ppa:teejee2008/ppa` 应该是 `sudo apt-add-repository ppa:teejee2008/ppa`。仅接受 1 个参数。 (2认同)
  • 对于想要进行可选择的系统范围和用户备份的人来说,这是最现实的选择。顺便说一句,当前版本支持的设置比屏幕截图中显示的设置要多得多。 (2认同)

Isa*_*iah 9

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

至于您的程序设置,其中大部分.位于您的主文件夹中的隐藏(以 开头)文件夹和文件中。我只会备份所有这些。