Chcę używać rsync do przyrostowych kopii zapasowych. Jednak zawodzi, gdy próbuję tego tak:
SRC="/"
TRG="/backup/"
LNK="/oldbackup/"
OPT="-a --exclude={/dev,/proc,/sys,/tmp,/run,/mnt,/media,/lost+found} --link-dest=$LNK"
rsync $OPT $SRC $TRG
Ale działa tak:
SRC="/"
TRG="/backup/"
LNK="/oldbackup/"
rsync -a --exclude={/dev,/proc,/sys,/tmp,/run,/mnt,/media,/lost+found} --link-dest=$LNK $SRC $TRG
Co zrobiłem źle?
Odpowiedzi:
2 dla odpowiedzi № 1Sprawdź kolejność rozszerzeń w man bash
: rozwijanie nawiasów odbywa się najpierw, późniejsze rozszerzanie zmiennych. Dlatego nawiasy klamrowe w zmiennej nie są rozwijane.
Możesz użyć tablicy do przechwycenia wartości, użyj rozszerzenia już w przypisaniu:
opts=( -a --exclude={/dev,/proc,/sys,/tmp,/run,/mnt,/media,/lost+found} --link-dest="$LNK" )
rsync "${opts[@]}" "$SRC" "$TRG"