2009-01-04 88 views
5

我有我的運行備份到外部硬盤驅動器這個bash腳本......只有當驅動器安裝(OS X):如何讓rsync只在目標目錄存在時才運行?

DIR=/Volumes/External; 
if [ -e $DIR ]; 
then rsync -av ~/dir_to_backup $DIR; 
else echo "$DIR does not exist"; 
fi 

這工作,但我感覺我誤解了rsync手冊頁。如果頂級目標目錄不存在,是否有內置的rsync選項來中止運行?在沒有測試/ Volumes/External的存在的情況下,如果目錄尚未安裝,則該目錄將由該名稱創建。

回答

3

這兩個標誌看起來就像你在找什麼:

--existing, --ignore-non-existing 

從手冊頁:

--existing, - 忽略不存在
這告訴rsync的跳過創建目標上還不存在的文件(包括目錄)。如果此選項與--ignore-existing選項結合使用,則不會更新任何文件(如果您只想刪除無關文件,則可以使用該選項)。

+0

與--existing,他在源層次結構中的新目錄將永遠不會在備份驅動器上創建... – mjy 2009-01-04 15:06:25

+1

是的這些是我似乎無法按照我希望他們的方式工作的選項。即使由於目標目錄不存在而導致運行中止,目標目錄也會被創建(儘管樹未被複制)。 – Marcus 2009-01-04 15:15:45

2

據我所知沒有,但你可以模擬以斜線的水煤漿:

rsync -av dir_to_backup /Volumes/External/;

它會報錯並退出,如果該目錄不存在(這可能會或可能不會需要) 。

此外,您還可以隨時優化掉了,如果:

test -e $DIR && rsync -av ...

1

沒有,似乎沒有進行任何此類選項,據我可以從手冊頁看到。

相關問題