Eu quero usar o rsync para backups incrementais. No entanto, falha quando eu tento assim:
SRC="/"
TRG="/backup/"
LNK="/oldbackup/"
OPT="-a --exclude={/dev,/proc,/sys,/tmp,/run,/mnt,/media,/lost+found} --link-dest=$LNK"
rsync $OPT $SRC $TRG
Mas funciona assim:
SRC="/"
TRG="/backup/"
LNK="/oldbackup/"
rsync -a --exclude={/dev,/proc,/sys,/tmp,/run,/mnt,/media,/lost+found} --link-dest=$LNK $SRC $TRG
O que eu fiz errado?
Respostas:
2 para resposta № 1Verifique a ordem das expansões em man bash
: expansão de chave acontece primeiro, expansão variável acontece depois. Portanto, chaves em uma variável não são expandidas.
Você pode usar uma matriz para capturar os valores, use a expansão já na atribuição:
opts=( -a --exclude={/dev,/proc,/sys,/tmp,/run,/mnt,/media,/lost+found} --link-dest="$LNK" )
rsync "${opts[@]}" "$SRC" "$TRG"