![如何编写 rsync 命令来备份除硬件特定文件之外的所有内容](https://linux22.com/image/540188/%E5%A6%82%E4%BD%95%E7%BC%96%E5%86%99%20rsync%20%E5%91%BD%E4%BB%A4%E6%9D%A5%E5%A4%87%E4%BB%BD%E9%99%A4%E7%A1%AC%E4%BB%B6%E7%89%B9%E5%AE%9A%E6%96%87%E4%BB%B6%E4%B9%8B%E5%A4%96%E7%9A%84%E6%89%80%E6%9C%89%E5%86%85%E5%AE%B9.png)
我有一台 VPS 生产服务器,用于为客户开发 Web 应用。我的开发服务器上运行着一个 rsync cron 作业,每天备份整个生产服务器。
#!/bin/sh
RSYNC=/usr/bin/rsync
SSH=/usr/bin/ssh
KEY=/root/backup-rsync-key
RUSER=root
RHOST=xxx.xxx.xxx.xxx
LPATH=/home/backup
RPATH=/
$RSYNC -avz -e "$SSH -i $KEY" $RUSER@$RHOST:$RPATH $LPATH
它工作正常,但出现以下类型的错误:
...
rsync: read errors mapping "/sys/module/yenta_socket/parameters/disable_clkrun": No data available (61)
ERROR: sys/module/yenta_socket/parameters/isa_probe failed verification -- update discarded.
rsync: read errors mapping "/sys/module/yenta_socket/parameters/isa_probe": No data available (61)
ERROR: sys/module/yenta_socket/parameters/pwr_irqs_off failed verification -- update discarded.
rsync: read errors mapping "/sys/module/yenta_socket/parameters/pwr_irqs_off": No data available (61)
ERROR: sys/power/state failed verification -- update discarded.
rsync: read errors mapping "/sys/power/state": No data available (61)
rsync error: some files could not be transferred (code 23) at main.c(1298) [generator=2.6.8]
(这只是错误的片段)
除了无法备份的内容之外,我怎样才能备份所有内容?
谢谢
答案1
您必须排除不必要的文件。
好的开始是 -x
-x, --one-file-system don't cross filesystem boundaries
(来自 man rsync(1))。这会排除您未明确指定的文件系统。请记住,然后您必须列出要包含的所有挂载点。mount
为您提供列表。
另一个有用的选项是--exclude
:
--exclude=PATTERN exclude files matching PATTERN
--exclude-from=FILE read exclude patterns from FILE
你的命令将会是这样的
rsync -avzx --exclude=/tmp --exclude=/var/cache -e "$SSH -i $KEY" $RUSER@$RHOST:$RPATH $LPATH
答案2
您可以使用 --exclude 选项排除特定文件,例如“--exclude=/sys”。此外,您还可以使用 --exclude-from 选项排除特定文件中列出的文件。
答案3
查看--exclude-from
命令行选项,它允许您定义一个文件,其中包含 rsync 应排除的文件和目录的列表。