2016-01-12 20 views
-1

服務器我有一大堆的文件夾和文件:文件夾上傳新的和修改過的文件與猛砸

file1.txt 
file2.db 
file3.csv 
Images/AA/BB/ABCDEFEFERFERGE/img_201553.jpg 
Images/DD/CC/DFGDGDSGSFGDSGD/img_345213.jpg 
Images/FF/EE/DFGSGGDSFGERERW/img_342311.jpg 

有大約3檔(+ 1),將獲得更長或更小,因爲它們是經常修改。然後有一個包含許多圖像的子文件夾的圖像文件夾。這些圖像將被刪除並添加。他們不需要保存在單個文件夾中,我們可以將它們全部放入1個文件夾中。

每小時,我想運行一個cron作業,它將使用bash腳本將所有這些複製到我的FTP服務器。如果有新圖像,請發送。如果2-4文件發生更改,請發送並重命名它們(可能按日期)。

我們可以使用FTP/SSH/SCP/SFTP。我沒有偏好。

+1

這個問題有點模糊。你的問題到底是什麼?你在尋找FTP的程序庫嗎? – user1934428

回答

0

比方說,你有你的本地主機的文件夾名爲MyLocalFolder和有它的遠程服務器上的副本稱爲MyRemoteFolder那麼你已經更新MyLocalFolder,你需要保持MyRemoteFolder內容與MyLocalFolder跟上時代的。我認爲,在這種情況下,最好的選擇將使用rsync一個選項來更新(修改或新文件)

rsync -avu /path/to/MyLocalFolder/. -e 'ssh -p ssh_port' [email protected]_server_ip:/path/to/MyRemoteFolder

的更多信息,請rsync命令的手冊頁

編輯:萬一您需要更新遠程文件夾而不刪除從本地刪除的文件,您可以按照本示例進行操作(並首先嚐試以確保其工作正常)

MyLocalFolder包含: file1 file2 file3 file4 fi LE5 file7 file8

MyRemoteFolder包含: 文件1文件2文件3文件4 file5 file6

爲了更新有了新的變化MyRemoteFolder無需拆卸file6:

  • 第一列表生成存在於文件列表MyRemoteFolder而不是MylocalFolder使用下面的命令:

diff MyLocalFolder MyRemoteFolder

這會爲您提供了以下輸出 Only in MyLocalFolder: file7 Only in MyLocalFolder: file8 Only in MyRemoteFolder: file6 - 用於生成文件的列表,只有在MyRemoteFolder

diff MyLocalFolder MyRemoteFolder | grep 'MyRemoteFolder' | awk '{print $4}' > dont-remove-these-files.txt

  • 通行證,列出與rsync,使其忽略刪除的文件:

rsync -avu --delete --exclude-from 'dont-remove-these-files.txt' MyLocalFolder/. MyRemoteFolder

上述命令將僅傳輸修改後的文件和新文件,並忽略任何刪除文件。

我只在本地計算機上測試了這些步驟,並且它正常工作。但我沒有機會嘗試使用遠程服務器。以下網址有一個關於How to use diff through ssh的問題,然後將所有必要步驟添加到bash腳本並使用cron運行它。

如果您需要備份。您可以再次使用該列表從遠程文件夾備份已刪除的文件,也許可以將它們移動到另一個文件夾或其他文件夾中。

我希望這個答案足以得到你需要的東西。

+0

沒錯,但是如果一個圖像被刪除了,我也不希望它被遠程刪除。它必須是一個備份。 – User

+0

@用戶我已經更新了我的答案,請檢查它。 –