完整系统备份时可以安全排除哪些内容?

我正在寻找一个列表,列出哪些路径/文件可以安全地排除在完整的系统/主目录备份之外。
考虑到我有一个已安装软件包的列表。
- /home/*/.thumbnails - /home/*/.cache - /home/*/.mozilla/firefox/*.default/Cache - /home/*/.mozilla/firefox/*.default/OfflineCache - /home/*/.local/share/Trash - /home/*/.gvfs/ - /tmp/ - /var/tmp/
以下不是真正的文件夹,但在“恢复”时可能会导致严重问题: - /dev - /proc - /sys
那么其他的呢...
  • /var/ 一般是什么意思?
  • /var/backups/ - 可能会变得很大
  • /var/log/ - 不需要太多空间,可以帮助以后进行比较
  • /lost+found/

这是一个(非常)相关的答案,值得一看(前提是该问题没有被关闭为重复):http://askubuntu.com/questions/5596/how-to-clean-caches-in-my-homedir/5610#5610 - Scaine
我对/home/*/.local/share/Trash不太确定。我已经从备份中的垃圾文件夹恢复了文件。这是一个错误的删除,我在备份之后才注意到并撤销了操作 - 在恢复备份时,文件仍然在垃圾箱中。 - reducing activity
~/.local/share/Trash/* 似乎是通用的,但是由用户决定。 - SDsolar
请注意,这是在2011年发布的信息。在2017年可能会有所不同。 - SDsolar
3个回答

当我使用rsync将我的系统同步到备份分区时,我会排除以下内容:
--exclude=/dev/* \
--exclude=/home/*/.gvfs \
--exclude=/home/*/.mozilla/firefox/*/Cache \
--exclude=/home/*/.cache/chromium \
--exclude=/home/*/.thumbnails \
--exclude=/media/* \
--exclude=/mnt/* \
--exclude=/proc/* \
--exclude=/sys/* \
--exclude=/tmp/* \
--exclude=/home/*/.local/share/Trash \
--exclude=/etc/fstab \
--exclude=/var/run/* \
--exclude=/var/lock/* \
--exclude=/lib/modules/*/volatile/.mounted \
--exclude=/var/cache/apt/archives/* \

这样我就能像启动原始分区一样启动备份分区。
所以总结一下,我建议:
- 不要排除`/{dev,proc,media,...}`本身,只排除它们的内容 - 排除`/var/{run,lock}`,尤其是庞大的`/var/cache/apt/archives/`目录

2你想把/dev目录完全排除掉。 - psusi
@psusi - 是的,你说得对。我正在编辑我的帖子。谢谢。 - arrange
3我建议在备份时使用rsync的-x选项。这样,它将不会跨越文件系统边界,从而排除/dev、/proc、/sys、/mnt和/media等内容。但你仍然需要排除/home/*/.gvfs。 - Azendale
3@Azendale: 可能是这样。另一方面,当你使用像 --exclude=/proc/* 这样的参数时,它会保留备份中的 /proc 目录(如果你想引导镜像是需要的),但不会保留其中的内容。 - arrange
对于Opera用户,我还会添加--exclude=/home/*/.opera/cache :) - Grzegorz Wierzowiecki
2也许这是一个天真的问题,但为什么/etc/fstab也被排除在外呢? - Paolo
@Guandalino:如果你想要能够启动到备份分区,那么需要手动编辑/etc/fstab文件。否则,不需要排除该文件。 - arrange
你会建议使用什么标志来进行rsync吗?或者更好的是,你会给出一个完整的命令来通过ssh将备份传输到远程机器上吗? - MemphiZ
Firefox 这些天将其缓存存储在 /home/*/.cache/mozilla/* 而不是 /home/*/.mozilla/firefox/*/Cache/ - gene_wood
1这些巨大的文件是/var/log/kern* 和 var/log/messages* - 排除它们安全吗? - SDsolar

我建议排除所有的/usr(除了/usr/local/),并备份dpkg --get-selections
在我看来,完全备份并不是真正有用的。我更喜欢备份数据和偏好设置,然后从官方仓库恢复软件包。
但这只是我的个人偏好... /usr主要包含来自发行版软件包的静态二进制内容。重新安装软件包将还原/usr内容。此外,/bin/sbin也包含来自发行版软件包的二进制文件。 /usr/local包含手动安装的软件包(不属于发行版软件包)。因此,这值得备份。

2非常有趣的方法。它将产生一个显著较小的备份,但在恢复时需要更多的麻烦(时间、网络带宽)。这是一个在某些使用情况下可能值得权衡的折中方案。问题:/lib目录又如何?相同的规则适用吗?以及如何恢复这样的软件包选择? - MestreLion
2是的,我认为您也可以排除/lib。我还要补充一点,与其使用dpkg --get-selections,也许使用apt-mark会更好,正如这里所说:http://askubuntu.com/questions/101931/restoring-all-data-and-dependencies-from-dpkg-set-selections - gerlos

我在配置完整系统备份时,也阅读了所有答案和其他相关问题。
我的建议是,在离线系统进行完整系统备份时,不要排除任何内容。
让我详细解释一下: 如果你从系统内部备份系统,那么你可以像其他人提到的那样排除一些目录,但我认为这不是一个好方法,因为在恢复系统时可能会引入一些错误。例如,如果你排除了/tmp目录,那么在恢复后,/tmp将不存在,系统会创建一个新的/tmp,并且由于/tmp上的chmod和chown问题,这可能导致登录界面卡住。而不备份~/.cache目录可能会导致Ubuntu软件中心的数据库缓存出现问题。
我所做的是使用Live CD,使用LuckyBackup备份整个系统,不省略任何内容。在恢复时,我选择“删除源中不存在的文件”。这样,你将完全恢复一个系统快照,与你创建备份时的状态完全相同(有点像虚拟机的快照)。

2很多文件不应该被保存,因为它们并不是真正的文件,而是伪文件。你可能想要保存缓存,但不要保存/proc/dev/sys的内容。它们的内容是在启动时创建的。 - admirabilis
1@TeresaeJunior 当采用这种方法并且从一个离线系统进行备份时,这些虚拟文件的内容已经为空。 - Gaurav Kumar
是的,你说得对,抱歉!我没有注意到你提到的LiveCD。 - admirabilis
很抱歉,这些系统必须全天候运行,所以没有那种奢侈的条件。我有一个很好的排除列表,但总是卡在4G /var/log/kern和/var/log/messages上 - 我想要将它们排除在外,但没有人提到过这个。那么完全排除/var/log/*怎么样? - SDsolar