比方說,你有你的本地主機的文件夾名爲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 -avu --delete --exclude-from 'dont-remove-these-files.txt' MyLocalFolder/. MyRemoteFolder
上述命令將僅傳輸修改後的文件和新文件,並忽略任何刪除文件。
我只在本地計算機上測試了這些步驟,並且它正常工作。但我沒有機會嘗試使用遠程服務器。以下網址有一個關於How to use diff through ssh的問題,然後將所有必要步驟添加到bash腳本並使用cron運行它。
如果您需要備份。您可以再次使用該列表從遠程文件夾備份已刪除的文件,也許可以將它們移動到另一個文件夾或其他文件夾中。
我希望這個答案足以得到你需要的東西。
這個問題有點模糊。你的問題到底是什麼?你在尋找FTP的程序庫嗎? – user1934428