/ / rsync скрипт за резервно копие се провали, когато опциите са в променливи - bash, shell, променливи, rsync,

rsync скриптът за резервно копие се проваля, когато опциите са в променлив - bash, shell, variables, rsync, brace-expansion

Искам да използвам 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

Какво направих погрешно?

Отговори:

2 за отговор № 1

Проверете реда на разширенията в man bash: разширение на пръстена се случва на първо място, променливо разширение се случва по-късно. Следователно, скобите в променливата не се разширяват.

Можете да използвате масив за заснемане на стойностите, като вече използвате разширението в заданието:

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