我正在使用 Duplicati 为我的(Ubuntu 20.04)计算机设置完整的在线备份(以在发生盗窃、火灾等情况时恢复到新计算机)。我目前正在决定要包含我的主目录的哪些部分/home/drubbels/
- 尝试获取所有不可替代的个人文件,同时排除尽可能多的应用程序数据(这只会浪费空间,并且可能比从源重新下载和重新安装更容易)从备份恢复)。
最初,我认为我应该排除所有以 开头的主文件夹文件.
并包含所有其余文件,但事实证明这不起作用 - 该Steam
文件夹包含所有 Steam 游戏的游戏数据(不应在备份中),而该.minecraft
文件夹包含例如单人游戏保存游戏(应该位于备份中)。此外,我不知道某些应用程序的重要个人设置是否完全位于主文件夹之外(在/etc/
,在/usr/
...中)。理想情况下,我希望恢复包括我的自定义 Nautilus 书签、我选择的终端铃声......
显然,上面提到的Steam
和.minecraft
game 目录是一个相当具体的示例,对于一般情况可能无法给出 100% 正确的答案,但是,从广义上讲,哪些目录应该(以及哪些不应该)位于Linux 安装的完整备份?
答案1
我认为不可能回答这个问题。应用程序可以将数据存储在主目录中的任何位置,因此很难区分哪些数据重要,哪些不重要。我想说备份一切。唯一明显要省略的文件夹是 IMHO.cache
和.local/share/Trash
.应用程序应将其数据保存到.local
,GNOME 设置应位于.gnome
(KDE 位于.kde
),但 Firefox 使用.mozilla
,如果您使用 Wine,它会将所有数据保存在.wine
,flatpak 应用程序将数据存储在.var
等等。
我不知道某些应用程序的重要个人设置是否完全位于主文件夹之外(在...
/etc/
中/usr/
)
您作为“普通”用户运行的应用程序无法在您的家庭之外编写,因此它们无法将数据存储在/etc
,/etc
包含系统配置中。
答案2
我对备份的建议是默认包含所有内容,然后根据需要使用排除列表来削减脂肪,该排除列表会删除不需要备份的部分。有许多并不重要的小文件,但通常都很小,不值得费力将其排除。如果您喜欢 GUI,您可以使用du
命令行或 GNOME 磁盘使用分析器等程序。我推荐的版本du
是这样的:
du -xhad1 | sort -h
它显示当前文件夹的所有子文件夹,按人类可读的大小排序。您可能会发现~/.cache/
可以安全地删除它,我也倾向于将其包含~/Downloads/
在排除列表中,因为它可能会变得很大,但所有内容都可以稍后重新下载。当然,您可以通过查找最大的文件夹并在其中运行命令来更深入地挖掘。例如,我发现它~/.local/share/baloo
是一个带有搜索索引的 22 GB 文件夹。 Baloo 是 KDE 文件索引软件,用于搜索和定位桌面上的内容。如果您稍后必须对主文件夹进行完整恢复,那么应该可以安全地排除它,并让它重新索引。它还可能会进行很多更改,每次更改都可能会复制该索引文件,并很快耗尽备份的磁盘空间。
在这一点上,您可能还想比较迭代之间的备份,并查看是否有任何大文件/文件夹在每次迭代中因为更改而不断备份。 Baloo 将其所有内容存储在一个文件中,并且可能还有许多其他示例。
我最喜欢的备份工具是像 Dirvish 和 rsnapshot 这样的工具,它们将文件保存在透明的目录树中,每个图像一个,并使用硬链接来共享它们之间未更改的文件。有了这些图像,我可以像普通文件一样访问它们,因为它们就是这样,但是保存在自己的文件夹中的每个图像将在文件未更改的情况下通过硬链接在其他图像之间有效地共享文件。这样,我可以du
在它们之间使用类似的命令,并且它只会在第一次看到文件时计算文件大小。例如:
du -shc 2*
127G 20230706
3.7G 20231005
3.6G 20240105
这表明我在 2023-07-06 备份的基础镜像占用了 127 GB 的存储空间,但几个月后,只剩下 3.7 GB 的存储空间。新的尽管我知道整个备份应该超过一百GB。这是因为du
可以避免过度计算硬链接。如果我du
直接在第二个图像上运行,我会看到它的总大小以及之前的硬链接文件:
# du -shc 20231005
127G 20231005
127G total
实际上,du
我可以看到备份的磁盘增量增长。如果我看到某个特定备份大幅增长,我可以比较两者并查看它来自哪里。