Answers:
这两个/proc
和/sys
是反映系统的状态,并允许您更改一些运行时参数(有时做更危险的事情,比如直接写入存储器或设备)的虚拟文件系统。您永远不应备份或还原它们。
在大多数现代发行版中,/dev
它是在启动时动态创建的(它是由udev
and friends 填充的内存文件系统)。备份它毫无意义,尝试还原它是徒劳的。但是,如果您的发行版配置为使用static /dev
,则此方法不适用(检查/proc/mounts
,如果/dev
是tmpfs
,则为内存文件系统)。
还有其他文件系统不应该备份;usbfs
(通常/proc/bus/usb
,如果安装的话), debugfs
(应该是在/sys/kernel/debug
如果安装在所有的,但有些人把它放在别的地方,你可能没有这一项), devpts
(安装在/dev/pts
),其他tmpfs
情况下(通常存在于/dev/shm
,/var/run
,/var/lock
以及其他位置;备份和还原它们应该是无害的,但毫无意义,因为它们的内容在关闭时会丢失),任何远程文件系统或魔术自动挂载器目录(尝试备份或还原它们都可能会导致灾难,您可以这样做)最终将备份/还原到另一台机器上)。您还应该注意/media
和/mnt
,因为可以在此处找到外部设备(例如您在驱动器中忘记的CD),但是您也可能故意使用它们来安装应备份的内容。
需要注意的是,不是大多无害的其他tmpfs
情况下,网络文件系统/ automounters和可移动介质,你不应该备份是所有后代文件系统/dev
,/proc
或/sys
。如果您有任何网络文件系统(或automounters),并没有可移动媒体,排除/sys
和/proc
并重启后恢复(擦拭tmpfs
实例)就足够了。
/ boot,/ dev和/ proc对备份非常无用-但是,如果您知道自己在做什么,则可以备份/ boot。
我也不会备份/ lib,/ media,/ mnt,/ sbin,/ bin,/ srv,/ sys或/ tmp。
/ usr是可选的,具体取决于/ usr中是否有值得备份的内容。如果您是我,则最担心备份用户的$ HOMEs,/ var和/ etc(用于配置文件)。
同样,这实际上取决于您要执行的备份类型。这是网络服务器吗?这是个人电脑吗?这是在/ home下具有大量目录的Shell服务器吗?
rsync
你不仅只复制你已经使用的,但也使未来的同步,这样你就可以放心地为它运行一个cron作业。
您可以使用sfdisk和dd实现完全备份。
要备份每个硬盘的分区方案,可以使用sfdisk,如下所示:
sfdisk -d /dev/sda > parttable_sda.part
要备份每个分区,可以使用dd,如下所示:
dd if=/dev/sda1 of=devsda1.img
凡/dev/sda1
被卸载,如用活光盘启动。
(请记住,您将需要大量可用空间来写入此文件;因此,您可能希望将其写入外部媒体)对每个分区一次执行一次,然后备份所有内容。
然后,要在另一台计算机上还原,可以执行以下操作:
sfdisk /dev/sda < parttable_sda.part
dd if=devsda1.img of=/dev/sda1 # do this for each partition
dd if=/dev/urandom of=/dev/sdb bs=512 count=12
擦除目标驱动器的MBR和分区表很重要。
我通常不备份而不是排除自己想要的东西。包括:(/home
/etc
/var
除外/var/log
)
基本上,不需要备份伪文件系统(/ proc,/ sys,/ dev / shm ...)。
正如这个伟大的社区所指出的:
/ 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:详细
我在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
我通常养成备份系统上所有内容的习惯,即使我肯定知道的东西也无济于事。设置更简单,您可以100%确保将所需的一切都包含在备份中。
/proc
,/dev
以免与贫穷的小孩子混淆rsync
。
问题:备份服务器时应排除哪些目录?
这是我经常使用的脚本,从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" \
abc@prime5:/mnt/full/pav
echo "====================================================================="
df -h
请注意-的排除情况/mnt
,即每个Ubuntu系统都安装了一个全时备份驱动器,用于rsync
每天进行4次基于cron的自我备份。这些驱动器通过条目安装,fstab
并且始终存在。将它们包括在另一个系统的备份中将是重复的。
同样,/media
也就是安装USB驱动器的位置。它们分别备份。
/boot
-您可能需要将旧的引导配置与新的引导配置进行比较。只要确保不要手动还原即可/boot
。