【问题标题】:rsync backup script fails when options are in variablersync backup script fails when options are in variable
【发布时间】:2016-08-27 20:15:12
【问题描述】:

我想使用 rsync 进行增量备份。但是,当我这样尝试时它失败了:

SRC="/"
TRG="/backup/"
LNK="/oldbackup/"
OPT="-a --exclude={/dev,/proc,/sys,/tmp,/run,/mnt,/media,/lost+found} --link-dest=$LNK"

rsync $OPT $SRC $TRG

但是像这样工作:

SRC="/"
TRG="/backup/"
LNK="/oldbackup/"

rsync -a --exclude={/dev,/proc,/sys,/tmp,/run,/mnt,/media,/lost+found} --link-dest=$LNK $SRC $TRG

我做错了什么?

【问题讨论】:

    标签: bash shell variables rsync brace-expansion


    【解决方案1】:

    检查man bash中的扩展顺序:大括号扩展先发生,变量扩展后发生。因此,变量中的大括号不会被展开。

    您可以使用数组来捕获值,在赋值中使用扩展:

    opts=( -a --exclude={/dev,/proc,/sys,/tmp,/run,/mnt,/media,/lost+found} --link-dest="$LNK" )
    rsync "${opts[@]}" "$SRC" "$TRG"
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-02
    • 1970-01-01
    • 2019-06-04
    • 2022-12-01
    • 2022-08-05
    相关资源
    最近更新 更多