2016-08-27 7 views
0

증분 백업에 rsync를 사용하고 싶습니다. 그러나 내가이처럼하려고하면 실패옵션이 변수에있을 때 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 

내가 무슨 일을 했는가?

+0

는 의미를 실패? – heemayl

답변

2

man bash에서 확장 순서를 확인하십시오. 중괄호 확장이 먼저 발생하고 나중에 변수 확장이 발생합니다. 따라서 변수의 중괄호는 확장되지 않습니다.

당신은 값을 캡처 할당 이미 확장을 사용하는 배열을 사용할 수 있습니다

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

아주 좋습니다. +1. 관련 정보에 대해서는, OP가 [변수에 명령을 넣으려고하는데 복잡한 사건은 항상 실패합니다!] (http://mywiki.wooledge.org/BashFAQ/050) – John1024