wake-up-neo.com

Linux-备份服务器时应排除哪些目录?

我正在备份Linux服务器并将其存储在另一台服务器上。

我从一个简单的开始

rsync -aPh --del server.example.com:/ /mnt/backup

然后有人指出,我不应该备份/proc,因为您不想在另一台服务器上还原/proc

还有其他我不应该/不应该包括的东西吗?

例如,/sys怎么样?

38
Rory

这实际上取决于您如何还原系统。如果要重建,则只需要服务的配置/数据文件(例如:/ etc,/ opt,/ var,/ home)

如果要进行完整的系统还原,则可以省略/ proc,/ boot和/ dev。然后,您可以从启动媒体安装最低操作系统,然后通过备份还原系统。

当然,最好的备份是经过测试已验证的备份。

因此,请忽略您不需要的内容,尝试以VM)进行还原,并确认您可以使用此数据恢复系统。

24
Wayne

/proc/sys都是虚拟文件系统,它们反映系统的状态,并允许您更改几个运行时参数(有时会做一些更危险的事情,例如直接写到内存或设备上) 。您永远不应备份或还原它们。

在大多数现代发行版中,/dev是在启动时动态创建的(它是一个由udev和朋友填充的内存文件系统)。备份它毫无意义,尝试还原它是徒劳的。但是,如果您的发行版配置为使用静态/dev,则此方法不适用(请检查/proc/mounts,如果/devtmpfs,则它是内存文件系统)。

还有其他文件系统不应该备份; usbfs(如果已安装,通常为/proc/bus/usb),debugfs(如果已安装,则应为/sys/kernel/debug),但有些人将其放置在其他地方;您可能没有这个),devpts(安装在/dev/pts),其他tmpfs实例(通常在/dev/shm/var/run/var/lock中找到)以及其他位置;备份和还原它们应该是无害的,但毫无意义,因为它们的内容在关闭时会丢失),任何远程文件系统或魔术自动挂载器目录(尝试备份或还原它们都可能会导致灾难,您可以这样做)最终备份/还原到另一台计算机)。您还应该注意/media/mnt,因为可以在其中找到外部设备(例如您在驱动器中忘记的CD),但是您可能还故意使用了它们来挂载应被备份。

请注意,除了大多数无害的tmpfs实例,网络文件系统/自动挂载器和可移动媒体以外,您不应该备份的文件系统都是/dev/proc/sys。如果您没有网络文件系统(或自动挂载器),也没有可移动媒体(不包括/sys/proc),并且在还原后重新启动(以擦除tmpfs实例)就足够了。

30
CesarB

请参阅 备份之道 ,第1章。

17
Teddy

/ proc和/ sys中的某些特殊文件使rsync混淆。通常,您也不想备份已安装的网络文件系统。稀疏文件也可能导致问题。

添加-x以将其限制为一个文件系统。这样可以避免所有网络文件系统和/ proc等。但是,随后您需要为已安装的每个文件系统运行一个rsync。

添加-S可以明智地处理稀疏文件。

8
pjc50

/ boot,/ dev和/ proc对备份非常无用-但是,如果您知道自己在做什么,则可以备份/ boot。

我也不会备份/ lib,/ media,/ mnt,/ sbin,/ bin,/ srv,/ sys或/ tmp。

/ usr是可选的,具体取决于/ usr中是否有值得备份的内容。如果您是我,则最担心备份用户的$ HOMEs,/ var和/ etc(用于配置文件)。

同样,这实际上取决于您要执行的备份type。这是网络服务器吗?这是个人电脑吗?这是在/ home下有大量目录的Shell服务器吗?

4
Michael Pobega

您可以使用sfdisk和dd实现完全备份。


要备份每个硬盘的分区方案,可以使用sfdisk,如下所示:

sfdisk -d /dev/sda  > parttable_sda.part

要备份每个分区,可以使用dd,如下所示:

dd if=/dev/sda1 of=devsda1.img

卸载/dev/sda1的位置,例如使用live CD引导。

(请记住,您将需要大量可用空间来写入此文件;因此,您可能希望将其写入外部媒体)对每个分区一次执行一次,然后备份所有内容。


然后,要在另一台计算机上还原,可以执行以下操作:

sfdisk /dev/sda < parttable_sda.part
dd if=devsda1.img of=/dev/sda1    # do this for each partition
3
Michael Pobega

我通常不备份而不是排除自己想要的东西。包含: /home/etc/var (除了 /var/log

2
DennyHalim.com

基本上,不需要备份伪文件系统(/ proc,/ sys,/ dev/shm ...)。

1
sendmoreinfo

我在Ubuntu 18.04机器上,但排除了以下这些因素:

/dev/
/proc/
/sys/
/tmp/
/run/
/mnt/
/media/
/lost+found/
/cdrom/
/swapfile

另外,特别是对于我的设置,我不包括以下内容:

/home            <-- Backed up separately
/backup          <-- Mount point for backup disks
/data            <-- Mount point for data disks, which are backed up off-site
/scratch         <-- Mount point for volatile fast SSD scratch disk
1
user2724383

正如这个伟大的社区所指出的:

/ dev/proc/sys/tmp/run/media/lost + found/boot(/ boot是可选的,请参阅其他注释)

作为参考,我的最终rsync命令(在Arch中,外部媒体安装在“/run/media/fred/INTENSO /”中,并备份到名为“ fred”的文件夹中)是:

$ Sudo rsync -Pazhmxv-排除/ run/media-排除/ dev-排除/ lost + found-排除/ tmp-排除/ proc-排除/ boot-排除/ sys// run/media/fred/INTENSO/fred /。

(也可以在Bash下用大括号(--exclude = {/ dev,/ proc})或文本文件(--exclude-from ='excude.txt')指定排除的文件)。

-P:显示进度-a:存档模式-z:传输期间压缩-h:以人类可读格式输出数字-m:修剪空目录-x:限制为一个文件系统-v:详细

1
Fred Christophe

问题:备份服务器时应排除哪些目录?

这是我经常使用的脚本,从Ubuntu 16.04 LTS笔记本电脑到Ubuntu 16.04 LTS服务器。它清楚地显示了进行完全备份时应跳过哪些目录:

echo "EMPTYING TRASH"
rm -rf ~/.local/share/Trash/* >/dev/null 2>&1
echo "DELETING OLD LOGS"
Sudo rm -f /var/tmp/* >/dev/null 2>&1
Sudo rm -f /var/log/*.gz >/dev/null 2>&1
Sudo rm -f /var/log/kern* >/dev/null 2>&1
Sudo rm -f /var/log/messages* >/dev/null 2>&1
echo "DELETING CHROMIUM CACHE"
rm -rf /home/pi/.cache/chromium/Default/Cache/* >/dev/null 2>&1
echo "====================================================================="
echo "      BEGINNING RSYNC from PAV root to PRIME5:/mnt/full/pav"
echo "====================================================================="
time Sudo rsync -aAXv \
          / \
          --bwlimit=500 \
          --delete \
          --delete-excluded \
          --ignore-errors \
          --exclude="/dev/*" \
          --exclude="/proc/*" \
          --exclude="/sys/*" \
          --exclude="/tmp/*" \
          --exclude="/run/*" \
          --exclude="/mnt/*" \
          --exclude="/media/*" \
          --exclude="/lost+found" \
          [email protected]:/mnt/full/pav
echo "====================================================================="
df -h

请注意/mnt-每个Ubuntu系统都安装了一个全时备份驱动器,用于基于cron的rsync自我备份,每天4次。这些驱动器通过fstab中的条目安装,并且始终存在。将它们包括在另一个系统的备份中将是重复的。

同样,/media是USB驱动器的安装位置。它们分别备份。

0
SDsolar

我假设您在虚拟机上没有Linux。如果有可能,我敦促考虑迁移到虚拟化。虚拟机级别的备份是全新的一致性和易用性级别。有免费的虚拟化工具,因此您不必一定要投资VmWare或其他昂贵的怪兽工具。

0
Gnudiff

我使用Ubuntu Linux盒子作为网站开发和托管文档Wiki的测试服务器。每天晚上,crontab会将MySQL数据库转储到/ var/www,然后将所有/ var/www压缩并复制到备份服务器。这不是理想的,但足够了。我不得不一次重建服务器,而我真正想念的只是Apache和Samba配置文件。

0
Nic

我通常养成在系统上备份一切的习惯,即使我肯定知道的东西也无济于事。设置更简单,您可以100%确保将所需的一切都包含在备份中。

0
Maximus Minimus