我怎样才能备份我的整个系统并能够完美地恢复到我原来的位置?我已经安装了一些不错的主题并定制了很多东西(以图形方式),如果我需要重新安装,我不想重复这个过程。
我想我的问题是,我必须只备份主文件夹还是必须备份整个系统根文件夹。许多主题都建议不要备份根文件夹,但让我感到困惑。
我再次从头开始安装 Ubuntu 并导入我的主文件夹没有问题,只要它在 UI 和自定义主题等方面为我提供了一切。我对文档、视频等实际数据并不大惊小怪。我有这些通过基于云的解决方案的替代方法。另外,我有一些命令,fstab但不确定这是否也存储在主目录中?
我的想法是使用rsync和使用
sudo rsync -aAXv --delete --exclude=/dev/* --exclude=/proc/*
--exclude=/sys/* --exclude=/tmp/* --exclude=/run/* --exclude=/mnt/*
--exclude=/media/* --exclude="swapfile" --exclude="lost+found"
--exclude=".cache" --exclude="Downloads" --exclude=".VirtualBoxVMs"
--exclude=".ecryptfs"
Run Code Online (Sandbox Code Playgroud)
然后设置一个 cron 来安排这个。
你能帮我吗?
建议不要备份“ /”文件夹的原因是:通常,有许多虚拟(有时,物理)文件系统附加到它。虚拟文件系统就像一个/proc:它在硬盘上没有物理文件,而是列出/读取/写入它们的文件结构来操作内核的一些数据结构。例如,写入 1/sys/bus/pci/rescan不会向硬盘上的任何地方写入任何内容,而是重新扫描 PCI 总线以查找新设备。
支持它们将毫无意义,或者它们甚至可能是有害的。
如果您的目标是备份所有内容,那么您能做的最好的事情就是备份所有内容。但是,/由于上述问题,备份可能会出现问题。
然而,有一个简单的技巧可以解决这个问题。Linux 知道所谓的绑定挂载:这意味着您可以多次挂载文件系统。
例如,一个
mount /dev/sda7 /mnt/root
Run Code Online (Sandbox Code Playgroud)
将您的根文件系统(例如,考虑您的根是否为sda7)挂载到目录/mnt/root. 您将看到其中的所有内容,除了任何子挂载,包括虚拟文件系统。
诀窍是:在那之后,您可以安全地/mnt/root使用任何您想要的工具进行备份,包括rsync.
另请注意,这只是一个递归文件副本。您对可能发生的文件不一致问题没有任何保护。试想一下,如果一个数据库有两个文件,例如,/var/lib/postgresql/11/main/base/13731和/var/lib/postgresql/11/main/base/13732其中提到的海誓山盟。如果数据库引擎在备份过程运行时将某些内容写入第一个和第二个,则有可能第一个将被备份而第二个不会。因此,您的数据库将在恢复后变得垃圾。
这也是一个原因,为什么您可能会发现反对以这种方式备份您的系统的反对意见(有时非常激烈)。然而,在实际的用户级用例中,这样的真正问题很少存在,也许最典型的问题是当您使用数据库执行某些 Web 开发任务时。在家庭环境中,我简单地忽略了这个问题。在专业环境中,对于对此敏感的数据使用另一个不同的备份是可行的。
Clonezilla 来救援。糟糕的控制台界面,但可以可靠地完成工作。
从https://clonezilla.org/下载映像并制作可启动的 USB 驱动器
从 USB 驱动器启动 Clonezilla 并将您的驱动器和/或分区备份到 USB 驱动器或记忆棒以便于恢复。不要让 UX 吓到您,它确实有效。