gpt4 book ai didi

bash - 从 bash 脚本运行时出现 Rsync 语法错误

转载 作者:行者123 更新时间:2023-12-05 01:21:11 28 4
gpt4 key购买 nike

我一直在研究使用 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 中使用一个数组来保存您的参数,以防它们中的任何一个包含空格。尝试以下操作:

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
OPTS=( "-aAXv" "--delete" "--progress" "--link-dest=$LNK" )

#run the rsync command
echo "rsync $OPT1 $SRC $TRG"
rsync "${OPTS[@]}" "$SRC" "$TRG" > /var/log/backup/backup.rsync.log 2>&1

数组扩展 ${OPTS[@]},当被引用时,被特殊地视为一个参数序列,每个参数被单独引用以保留单个元素中的任何空白或特殊字符.如果arr=("a b"c d),那么echo "${arr[@]}"是一样的

echo "a b" "c" "d"

而不是

echo "a b c d"

这在不支持数组的 shell 中不起作用,但是后来发明了数组,因为没有安全的方法(即不使用 eval)来处理这种使用没有它们的情况。

关于bash - 从 bash 脚本运行时出现 Rsync 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22030280/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com