我正在备份一台Linux服务器并将其存储在另一台服务器上。 我从一个简单的开始
rsync -aPh --del server.example.com:/ /mnt/backup
然后有人指出我不应该备份/proc
,因为你不想在另一个服务器上恢复/proc
。
还有什么我应该/不应该包括的? 那么/sys
呢?
这真的取决于你将如何恢复你的系统。 如果你将重build,那么你只需要你的服务的configuration/数据文件(例如:/ etc,/ opt,/ var,/ home)
如果您正在完全恢复系统,那么您可以省略/ proc,/ boot&/ dev。 然后,您可以从引导介质安装最低的操作系统,然后通过备份恢复系统。
当然,最好的备份是经过testing和validation的备份。
因此,省略你认为不需要的东西,尝试在虚拟机中恢复,并validation你可以使用这些数据取回你的系统。
/proc
和/sys
都是反映系统状态的虚拟文件系统,允许您更改多个运行时参数(有时会做更危险的事情,如直接写入内存或设备)。 你不应该备份或恢复它们。
在大多数现代发行版中, /dev
是在启动时dynamic创build的(它是由udev
和朋友填充的内存文件系统)。 没有必要支持它,试图恢复它是徒劳的。 但是,如果您的分发configuration为使用静态/dev
,则不适用(如果/dev
是tmpfs
,则它是内存文件系统,则检查/proc/mounts
)。
还有其他的文件系统,你不应该备份; usbfs
(通常位于/proc/bus/usb
,如果安装的话), debugfs
(假如是挂载在/sys/kernel/debug
,但是有些人把它放在别的地方;你可能没有这个) , devpts
(挂载在/dev/pts
),其他tmpfs
实例(通常在/dev/shm
, /var/run
, /var/lock
和其他地方find;备份并恢复它们应该是无害的,他们的内容在关机时丢失),任何远程文件系统或魔法自动挂载机目录(尝试备份或恢复它们都可能最终导致灾难,因为最终可能会备份/还原到另一台机器 )。 你也应该小心使用/media
和/mnt
,因为可以在那里find外部设备(比如你在驱动器中忘记的CD),但是你也可能有意使用它们来安装应该备份的东西。
请注意,除了大多数无害的tmpfs
实例,networking文件系统/自动挂载程序和可移动介质以外,不应备份的文件系统都是/dev
, /proc
或/sys
后代。 如果您没有networking文件系统(或自动安装程序),并且没有可移动介质(不包括/sys
和/proc
并且在还原(重新启动tmpfs
实例)后重新启动应该足够了。
参见备份之道 ,第1章。
/ proc和/ sys中的一些特殊文件混淆了rsync。 通常,您不想备份安装的networking文件系统。 稀疏文件也可能导致问题。
添加-x将其限制为一个文件系统。 这样可以避免所有的networking文件系统和/ proc等等。但是,您需要为每个已安装的文件系统运行一个rsync。
添加-S以合理处理稀疏文件。
您可以使用sfdisk和dd来实现完整备份。 要备份每个硬盘的分区scheme,你可以使用sfdisk,像这样:
sfdisk -d /dev/sda > parttable_sda.part
要备份每个分区,您可以使用dd,如下所示:
dd if=/dev/sda1 of=devsda1.img
(请记住,你需要有足够的空间来编写这个文件,所以你可能想把它写到外部媒体上)每个分区一次一个,然后把所有的东西都备份起来。
然后,在另一台计算机上执行恢复操作:
sfdisk /dev/sda < parttable_sda.part dd if=devsda1.img of=/dev/sda1 # do this for each partition
/ boot,/ dev和/ proc是无用的备份 – 但是,如果你知道你在做什么,你可以备份/启动。
我也不会备份/ lib,/ media,/ mnt,/ sbin,/ bin,/ srv,/ sys或/ tmp。
/ usr是可选的,这取决于你是否有任何/ usr值得备份。 如果我是你我最担心的是备份用户的$ HOMEs,/ var和/ etc(用于configuration文件)。
再说一次,这完全取决于你想要做的备份types 。 这是一个Web服务器? 这是一台个人电脑吗? 这是一个shell目录/ home下的大量目录吗?
基本上,不需要备份伪文件系统(/ proc,/ sys,/ dev / shm …)。
而不是排除,我通常只备份我想要的。 包括: /home
/etc
/var
( /var/log
除外)
正如这个伟大的社区所指出的:
/ dev / proc / sys / tmp / run / media / lost + found / boot(/ boot是可选的,请参阅其他注释)
为了参考我的最后一个rsync命令(在安装有'/ run / media / fred / INTENSO /'的外部媒体的Arch下并备份到一个名为'fred'的文件夹)是:
$ sudo rsync -Pazhmxv –exclude / run / media –exclude / dev –exclude / lost + found –exclude / tmp –exclude / proc –exclude / boot –exclude / sys / / run / media /弗雷德/ INTENSO /弗雷德/。
(排除的文件也可以使用大括号(–exclude = {/ dev,/ proc})在Bash或文本文件(–exclude-from ='excude.txt'))中指定。
-P:显示进度-a:归档模式-z:在传送过程中压缩-h:以可读格式输出数字-m:删除空目录-x:限制为一个文件系统-v:详细
我通常养成一个系统备份的习惯,即使我知道的东西是无用的备份。 设置起来更简单,你可以100%确定你将获得备份中包含的所有东西。
我正在使用Ubuntu Linux盒子作为网站开发的testing服务器,以及托pipe文档wiki。 每天晚上,crontab将MySQL数据库转储到/ var / www中,然后所有的/ var / www被压缩并复制到备份服务器。 这并不理想,但这已经足够了。 我不得不一次重build服务器,而我真正错过的是Apache和Sambaconfiguration文件。
我假设你在虚拟机上没有Linux。 如果可能的话,我会敦促考虑转向虚拟化。 在虚拟机级别备份是一个全新的一致性和易用性的水平。 有免费的虚拟化工具,所以你不一定要投资到VmWare或其他昂贵的怪物工具。