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

评论

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

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

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

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

相关:如何使我安全平稳地过渡到一些新的计算机硬件?

#1 楼

程序

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

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错误)。您应该在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


评论


这在ubuntu 12.10上不起作用。它说dpkg:警告:软件包不在数据库中,在XXX行:xrdp并且没有名为“ dselect”的软件包

–confiq
13年1月8日在15:39

@confiq检查以上三个评论

–哈克
13年1月21日,0:49



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

–confiq
2013年6月3日15:30

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

–气球
2013年6月20日19:16

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

– porg
2014年2月3日在22:38

#2 楼

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

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

一旦准备好系统,请备份当前的程序包和用户设置


如果对安装的软件感到满意,则可以使用命令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创建的备份。 br />

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




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



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

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


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


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


如何将Gnome重置为默认值?
如何重置Compiz / Unity配置?


#3 楼

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

注意“最佳方式”,对一个人最有效的方法可能对另一个人并不好。

归根结底,“最佳方法”是已经过测试并且已知可以工作的方法。您需要在使用备份策略之前对其进行测试。

使用映像

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

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

备份较小

仅备份数据和设置即可进行较小的备份。有几种工具可以执行此操作,从dd到tar到rsync都应如此。

这里的关键是要了解您需要备份的内容。

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

始终需要提供支持的清单

1)已安装软件包的列表

软件包列表
#创建所有apt-的现有安装的文本列表。获取已安装的软件包
#,以便重新安装在新安装的发行版上。

# 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,使用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

测试

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

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

评论


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

– LAFK说恢复莫妮卡
2015年3月11日23:53

#4 楼

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



ubiquity(Ubuntu安装程序)使用APT-Clone进行升级。



安装

sudo apt-get install apt-clone



进行备份

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



恢复备份

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支持目录格式化卷
并将其上传到远程或本地文件服务器。由于duplicity
使用librsync,因此增量存档是节省空间的,并且仅
记录自上次备份以来已更改的文件部分。
因为duplicity使用GnuPG加密和/或签名这些存档,它们
可以安全地防止服务器进行间谍和/或修改。




安装

sudo apt-get install duplicity



备份

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


或增量备份(它将仅备份与上次备份的差异):

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



恢复

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



参考:man duplicity

评论


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

– Andrea Lazzarotto
2014年11月7日在16:22



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

–多里安(Dorian)
16年5月5日在4:34

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

–user.dz
16年6月6日在7:34

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

–多里安(Dorian)
16年6月6日在14:29

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

–user.dz
16年6月6日在19:52

#5 楼

尽管这个问题已经回答了一段时间,但我注意到没有人提到etckeeper。运行apt-get install etckeeper,在/etc/etckeeper/etckeeper.conf中配置VCS,从那时起您将可以更好地控制/ 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

>


#6 楼

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

...介绍Aptik。

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

可以通过ppa安装它:

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




希望有帮助: )

评论


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

– m3nda
17年4月12日在7:26

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

– m3nda
17年4月12日在7:44

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

– WebComer
18/12/3在17:49



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

–蒂姆·理查森(Tim Richardson)
19年1月6日在9:01

#7 楼

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

对于程序设置,大多数程序都位于主文件夹中的隐藏文件夹(以.开头)中。我会全部备份。

评论


并备份/ etc目录

–扩展器
10-10-24在4:34

#8 楼

如果不关心存储空间,则使用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>

要还原的映像文件在哪里
是要还原到的驱动器或分区。

PROS:易于备份,易于还原所有内容。与其他解决方案不同的是,由于您要备份所有内容,因此实际上并不需要太多计划,因为您不必担心是否需要它。

缺点:费时(计算机时间,而不是您的计算机时间),也不适合日常备份(无增量选项)

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

#9 楼


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


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

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

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

#10 楼

我假设它是新的HDD,SSD或新系统,或者您使用的是旧版Ubuntu。现在您想升级到Ubuntu 12.04(Precise Pangolin)吗?

我假设您讨厌再次全部安装或重新配置?

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

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


然后cp文本通过以下方法将文件保存到主目录:

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


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

/home备份到Ubuntu一个,一个闪存棒,一个软盘(会刮擦)或刻录到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:这样可以避免(实际上是在备份)大量应用程序的机器代码,请确保下载。文件夹是干净的。机器代码或视频不完整,然后使用k3B将download文件夹刻录到DVD。

#11 楼



apt-mark showmanual>Package.list

备份所有手动安装的软件包,然后用

apt install $(cat Package.list|xargs)


开始在新服务器上安装或更好。仅安装(如果尚未安装在新服务器上):

# ignore some on new server:
not_these="initscripts insserv ftp dns-root-data install-info manpages parted psmisc publicsuffix startpar sysv-rc"

for p in $(cat Package.list|xargs) ; do
  if [ $(dpkg-query -W -f='${Status}' $p 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
    if [ $(echo $not_these | grep -c $p) -eq 0 ]; then
      echo $p
    fi
  fi
done|xargs


注意:如果您不在英语语言环境中,可能需要添加LANG=C

#12 楼

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

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

#13 楼

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

备份/ home和/ etc

Aptik备份程序的时间

#14 楼

编辑:

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


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

点击这里

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

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

干杯

评论


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

–晕
16年11月10日在22:18

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

– Suhaib
16年11月11日在1:10

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

–晕
16年11月11日在7:02

#15 楼

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

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

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

评论


您能确认一下吗?

–脑袋
2013年9月10日14:51

此选项需要一个Ubuntu One帐户。根据官方文档:OneConf是一种用于在Ubuntu One中记录软件信息并根据需要与其他计算机同步的机制。 (wiki.ubuntu.com/OneConf)

–塞萨尔·摩尔
20年6月22日0:00