我一直在使用rsync进行增量备份的备份脚本。从bash脚本运行时出现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 - 删除...”; rsync“$ rOpts”'。因此错误msg'未知选项',祝大家好运。 – shellter
如果@shellter是正确的,你的第一站应该是[BashFAQ#50:我想在一个变量把一个命令,但是复杂的情况下总是失败(http://mywiki.wooledge.org/BashFAQ/ 050) –