San*_*dra 21 linux backup linode upgrade debian-jessie
我们想要备份我们的 Debian 服务器上的所有内容,该服务器在世界的另一端远程运行(由 Linode 托管),而无需关闭它。
这个系统运行 shell、电子邮件、XMPP/prosody 和 web,有几个简单的 nginx 设置。
为了安全起见,我们希望备份与这些内容相关的文件。例如,用户存储在其主目录中的文件。
我们不需要在每个 /etc 文件中完全复制现有的设置;相反,我们甚至首先进行备份的原因是我们可以将其全部移至新设置(较新版本的 Debian 仍在 Linode 上)。
我看到 Linode 提供备份服务。但从长远来看,我们也需要我们自己的备份,以防万一它们倒闭或发生其他奇怪的事情。
这个问题存在的原因是,当我过去尝试进行备份时,我一直在犯以下两个错误:
/它下面的所有内容”然后陷入一些奇怪的无限循环,因为我复制的驱动器安装在 /media/backup 下并且它正在递归复制自身 [obv该特定问题不适用于此处,因为我们将通过 rsync 或类似方式进行备份] 或者它在尝试复制 /proc 或 /var 或其他任何“活动”内容时卡住了,例如试图跟上不断变化的日志,或者/var),让我们/etc在 /var/ 下获取一份和所有旧邮件的副本vmail”,然后我总是搞砸了文件权限或时间戳(确保这次我不会将 unix 文件备份到 FAT 驱动器)或忘记某些东西(“哦,拍摄,我在 /usr/ 中有一些自定义脚本/我从未在其他任何地方存储过的本地/垃圾箱,我忘了拿那些,我猜它们现在已经不见了”)。因此,直接复制整个驱动器会导致陷阱,而选择性地复制目录会导致陷阱。我想知道如何正确地做到这一点。
服务器故障问题一个完整的备份系统需要什么?涵盖哲学和良好实践,但我正在寻找以下更具体的细节:
rsync -HXaz我认为对我们来说是一个不错的选择?该-zOBV没有真正涉及到这是“我该怎么维护”的问题我看到的很多备份建议,例如使用dd,似乎都假定驱动器已卸载且未在使用中。但我我不应该排除“活”的目录,如/ proc和一些在/ var子目录(但是,一些在/ var我知道我们肯定的东西做必要保持)和/安装?在这种情况下,我还需要考虑什么?然后我想我可以使用 rsync 并使用一堆--exclude标志来捕捉它。
或者有更好的想法,尤其是 FOSS 友好的想法?
小智 15
因此,您想备份所有驱动器,避免出现所有这些令人讨厌的错误,并过滤掉所有 /proc 和其他临时文件夹吗?
一个选项是将根文件夹挂载到文件系统中的另一个文件夹上,如下所示:
$ cd /mnt
$ mkdir drive
$ mount --bind / drive
Run Code Online (Sandbox Code Playgroud)
这将为您提供驱动器上所有不被视为临时的文件(如 /proc 或 /sys 文件夹)。
现在您已经清楚地看到了根文件夹,您可以使用标准cp或rsync. 类似的东西:
cp -R /mnt/drive /mnt/backupdrive
Run Code Online (Sandbox Code Playgroud)
这解决了您提到的两个问题:
另见:man mount(8)
Com*_*mar 10
在 Linux 中,一切都是文件。可以通过 rsync 实现,但是有些事情需要注意,(充其量)很难解决。
您应该首先考虑复制,尤其是对于数据库。此外,在主服务器前设置代理/负载平衡器也是一个好主意,这样您就可以在转换期间轻松地来回切换主服务器和镜像服务器。
在硬件层面,最好的情况是在另一端有类似镜像的服务器,具有相同数量的以太网端口、相同的硬盘布局等等。任何不同之处都意味着需要更改系统配置。
即,如果您有两个 eth 端口,您要确保网络配置、防火墙等与两台服务器上的接口名称匹配,如果不同,您需要在 rsync 后更改配置或在第二台上更改设备名称(目标)服务器。
与分区布局相同。您应该创建与主服务器上相同的分区,但是如果您从头开始创建它们,您最终会得到不同的 UUID,因此您需要更改 fstab、grub、mdadm(如果涉及软突袭)等等.
但是,也有很多事情可能会出错,比如数据库,如果之前没有停止(在执行 rsync 之前),它们可能会不一致。
最好的策略是首先准备硬件和文件系统(分区)——以匹配主服务器的配置。然后通过中间系统挂载空分区(比如临时安装了 ssh-server 的 live CD)。您创建空的 /proc、/dev、/sys,然后 rsync 其余部分,如下所示:
rsync -avz -H --delete /etc /bin (...and so on) destserver:/mnt/yourrootfs/
Run Code Online (Sandbox Code Playgroud)
然后您需要在设备上安装 grub 并进行配置,使其可启动、更改网络配置、fstab 和前面提到的其他内容。
您也可以尝试安装新系统(与您在主服务器上使用的版本相同),然后关闭电源,通过另一个临时系统(如 live cd)安装它,然后替换除 /proc、/ sys、/dev 和 /boot 与 rsync。
但这只是一般的想法。根据您在此服务器上实际拥有的内容、您的配置、网络和硬件设置,事情可能会变得复杂。归根结底,如果没有明显的停机时间,这可能真的很难或不可能做到。
你真正想要的是恢复。无论您做什么,您都必须定期恢复测试。
Linode 有备份服务。快照可以按照有限的预定义计划或使用 API 进行拍摄。
基于快照的备份的一个优点是它们提供了一个明确的时间点,因为在制作副本时数据不会发生变化。快照也可以很容易地恢复到不同的主机,在这种情况下是一个新的 Linode。