2017-06-11 35 views
0

我有一個情況,我有一個文件可以說源系統中的TEST.csv。我想在我的系統中同步該文件。無論何時在TEST.csv中添加新的內容或更改了某些舊數據,目標系統中的文件也會發生更改。 源系統只暴露給rsync,所以我不能使用除rsync以外的任何其他協議。 現在我只想單獨獲取TEST.csv中已更改的部分。 我該怎麼辦?通過rsync找出文件的不同部分

+0

我的答案能夠幫助您嗎? – EmilioMg

回答

0

如果我理解正確,您只想傳輸TEST.csv的變化部分而不是整個文件,是的? 如果是這樣,我認爲這是不可能的。這是直出的man rsync

The rsync remote-update protocol allows rsync to transfer just the differences between two sets of files across the network connection, using an efficient checksum-search algorithm described in the technical report that accompanies this package.

的關鍵部分是using an efficient checksum-search algorithm - 它違背了本地和遠程文件的校驗,如果校驗和而不同,所以將文件從源傳輸到目標。根據校驗和,無法確定文件的哪一部分發生了變化,只傳送差異。


你可以做的是使用本地版本工具,例如, git,並使用該工具獲取您的同步週期之間的差異。如果有差異,可以將其存儲在文件中,通過rsync傳輸,然後在目標端使用patch實用程序將此差異應用於TEST.csv。不需要

git,您可以使用源上的簡單diff -u和目標上的patch,而是利用差異,你必須追蹤的舊TEST.csv和新TEST.csv有了新的變化,然後運行diff反對。使用git,你只需用你想要的任何工具編輯這個文件,然後git使用它的內部機制爲這些改變創建正確的diffset。只要不要忘記在傳輸差異後添加並提交更改,因此下一個週期可以僅通過自己的更改進行清理差異;-)