如何编写 rsync 命令来备份除硬件特定文件之外的所有内容

如何编写 rsync 命令来备份除硬件特定文件之外的所有内容

我有一台 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 应排除的文件和目录的列表。

相关内容