2013-10-31 15 views
0

我有一個文件夾成千上萬的文件和520 GB的數據,我每晚通過rsync同步到遠程主機。這個過程通常需要大約5個小時。我還想在白天將這些新的和已更改的文件複製到遠程位置,而無需比較兩個樹,這是rsync所做的,因爲有時候目標上的人需要訪問新文件,所以我開始玩弄scp,但我不知道如何解決迄今爲止遇到的兩個問題。是的,我是一個新手。 :)將新文件複製到遠程主機與FIND和SCP(或更好的方式,你可能會建議)

這是我的命令,我想每小時運行一次: find folder/-type f -mmin -60 -print0 -exec scp「/ rootfolder1/subfolder1/{}」「user @ host:/ rootfolder2/subfolder2/{}「\;

我遇到的問題是: 當傳遞給scp的字符串有空格時,它不起作用並觸發錯誤「scp ambiguous target」。顯然,scp需要空間逃避反彈,但我不知道如何指示FIND以這種方式打印路徑,也不知道如何在其中插入SED命令來執行如下操作:sed's/// g' 。

另一件事是當要複製的文件位於目標scp中不存在的文件夾中時也會產生錯誤。所以我不知道在嘗試複製每個文件(假定mkdir -p在遠程主機上工作)之前,是否應該嘗試使用「mkdir -p」,或者是否有任何方法強制scp創建丟失的文件夾。

當然,如果你可以建議一個更好的解決方案,一切手段! 謝謝。

回答

0

您可以嘗試將所有這些都包含在for循環中:

我在`find/FOLDER -type f -mmin -60`;做scp「$ i」user @ host:「$ i」;完成

我在這裏的例子會將您查找的文件複製到另一臺服務器上的同名文件夾。變量($ i)周圍的雙引號應該有助於空格。

將此作爲cronjob運行,您可能會得到您想要的結果。但我會謹慎行事,但如果遇到競爭條件,您可以在第一次完成之前運行第二次複製程序。

如果您在第一次運行之前運行'time'命令,您可以瞭解cronjob窗口的製作方式。希望這可以幫助。

相關問題