2013-01-02 36 views
2

我已經寫的lftp的腳本,應該有效地反映遠程目錄到本地目錄,可能一次傳輸多個文件技嘉目錄。lftp的鏡像不符合我的標準

其中一個要求是當本地用戶不再需要時,本地用戶可以刪除本地文件,因爲我將有多個運行此腳本的「本地」計算機,所以我不想刪除遠程文件,直到我認識每個需要它的人,擁有它。因此,腳本使用--newer-than標誌僅鏡像自上次lftp腳本在本地運行以來在遠程服務器上新建/修改的文件。

下面是腳本的重要位:

lftp -u $login,$pass $host << EOF 
set ftp:ssl-allow yes 
set ftp:ssl-protect-data yes 
set ftp:ssl-protect-list yes 
set ftp:ssl-force yes 
set mirror:use-pget-n 5 

mirror -X * -I share*/* --newer-than=/local/file/last.run --continue --parallel=5 $remote_dir $local_dir 

quit 
EOF 

注意,EOF不是bash腳本的實際結束。

所以我排除$ remote_dir一切,除了在份額/目錄下任何東西,包括共享/目錄本身比last.run文件的時間戳新。

可正常工作除了在一個情況下說我有另一股特別命名的目錄/被叫shareWHATEVER/

所以份額/ shareWHATEVER/stuff.txt存在。

它第一次運行時,shareWHATEVER/stuff.txt在本地遠程複製到,和一切都很好。

如果我在本地全部刪除shareWHATEVER目錄(包括stuff.txt),那麼下次腳本運行時,stuff.txt不會鏡像,但shareWHATEVER即使即使遠程服務器上的時間戳沒有更改。

因此,在本地它看起來像share/shareWHATEVER /目錄爲空。

任何想法,爲什麼shareWHATEVER被複制,即使沒有自己的時間戳或任何文件的時間戳都--newer,比我的地方檢查?

謝謝。

回答

0

顯然,即使沒有文件被複制,創建目錄只是lftp的工作方式(和mirror選項--no-empty-dirs不會改變這種行爲)。

你可以在lftp mailing list討論這個問題。