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

我有一个VPS生产服务器,为我的客户提供networking应用程序。 我有一个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 

它工作正常,但给出了错误的types:

 ... 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] 

(这只是错误的一小部分)

如何备份除了不能备份的东西以外的所有东西?

谢谢

你必须排除不必要的文件。

好的开始是-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 

您可以使用–exclude选项排除特定文件,如“–exclude = / sys”。 此外,您可以使用–exclude-from选项来排除特定文件中列出的文件。

看看--exclude-from命令行选项,它允许你定义一个包含rsync应该排除的文件和目录列表的文件。