【发布时间】:2014-03-28 15:00:36
【问题描述】:
我一直在编写一个使用 rsync 进行增量备份的备份脚本。
我已经手动测试了以下 rsync 命令,它运行并完成备份没有错误:
rsync -aAXv --delete --progress --link-dest=/backup/Uyuk/Uyuk-backup-part1/2014-02-24/ /mnt/backup/ /backup/Uyuk/Uyuk-backup-part1/2014-02-25/
但是,当我在备份脚本中运行相同的命令时,会出现以下错误:
rsync: -aAXv --delete --progress --link-dest=/backup/Uyuk/Uyuk-backup-part1/2014-02-24/ /mnt/backup/ /backup/Uyuk/Uyuk-backup-part1/2014-02-25/: unknown option
rsync error: syntax or usage error (code 1) at main.c(1422) [client=3.0.6]
我在我的脚本上运行了 bash -x 以确定发送到控制台的确切内容,这是打印的内容:
+ rsync '-aAXv --delete --progress --link-dest=/backup/Uyuk/Uyuk-backup-part1/2014-02-24/ /mnt/backup/ /backup/Uyuk/Uyuk-backup-part1/2014-02-25/'
有谁知道出了什么问题?我找不到任何会导致语法错误的东西。
编辑: 这是我在脚本中的实际代码,这是一个非常大的脚本,所以是的,这里没有定义一些变量,但你明白了。
mkdir -p "/backup/$HOST/$NAME/$TODAY"
#source directory
SRC="$MNT"
#link directory
LNK="/backup/$HOST/$NAME/$LAST/"
#target directory
TRG="/backup/$HOST/$NAME/$TODAY/"
#rsync options
OPT1="-aAXv --delete --progress --link-dest=$LNK"
#run the rsync command
echo "rsync $OPT1 $SRC $TRG"
rsync "$OPT1 $SRC $TRG" > /var/log/backup/backup.rsync.log 2>&1
【问题讨论】:
-
为什么在您的脚本的
bash -x输出中的rsync选项周围有单引号?您能否在问题中包含您用来调用rsync的准确陈述? -
通常一个前导
+符号和单引号字符串是set -x显示带有所有 var 扩展和字符串引用的行的方式,其中所有"..."现在都“归结”为'...'(单引号字符串)。我认为缺少某些东西是对的,我猜 O.P. 正在做类似rOpts="-aXV --delete..."; rsync "$rOpts"的事情。因此出现错误消息unknown option,祝大家好运。 -
如果@shellter 是对的,你的第一站应该是BashFAQ #50: I'm trying to put a command in a variable, but the complex cases always fail!
-
我更新并包含了用于运行 rsync 命令的代码。