可以將Rsync配置爲在同步之前驗證文件內容。我聽說過校驗和,但我知道校驗只做抽樣。我只想在文件內容發生變化而不是時間戳的情況下傳輸文件,是否有辦法使用任何rsync模式執行此操作。 在我的場景中,比方說每週會創建一個文件sample.text,並且只有在sample.text的內容發生更改時纔會將其與遠程服務器同步,因爲它是每週創建的,時間戳顯然會更改。但我只希望在內容更改時進行轉移。可以在同步之前rsync驗證內容
回答
是的,你應該閱讀手冊。
$ man rsync | grep "\--checksum"
-c, --checksum skip based on checksum, not mod-time & size
Rsync相當複雜。我建議在手冊頁上摟抱一下時間,並在測試數據上進行實驗,然後將其用於任何遠程重要的事情。
大多數情況下,人們使用rsync -ac source dest
。
$ man rsync | grep "\--archive"
-a, --archive archive mode; same as -rlptgoD (no -H)
這-rlptgoD
垃圾是指:recursive
,copy symlinks as symlinks
,preserve permissions
,preserve times
,preserve group
,preserve owner
,preserve device files (super-user only)
,preserve special files
,並且skip based on checksum, not mod-time & size
的-c
或--checksum
真的是你正在尋找的東西,你的假設它只是採樣mtime和大小是錯誤的。
+ for _cuddle time with man page and test data with test_ - 非常好的建議 –
請參閱rsync手冊頁上的--checksum
選項。
此外,如果您確定內容的更改也意味着更改大小,則--size-only
選項將是更快的選擇。
例子:
#!/bin/bash
echo > diff.txt
rsync -rvcn --delete /source/ /destination/ > diff.txt
second_row=$(sed -n '2p' diff.txt)
if [ "$second_row" = "" ]; then
echo there was no change
else
echo there was change
fi
你應該真的添加一些解釋,說明爲什麼這段代碼應該工作 - 你也可以在代碼本身中添加註釋 - 以它的當前形式不提供任何可以幫助社區其他人理解你解決/回答問題的解釋。 – ishmaelMakitla
如果在rsync的詳細模式下diff.txt的第二行爲空,sed會檢查第二行。 – oldbowman
- 1. JPA同步驗證持續之前
- 2. 雙向同步rsync
- 3. 同步層之間的驗證值
- 4. 保持與前端驗證同步的後端驗證
- 5. 在SubmitChanges之前驗證Linq2Sql()
- 6. 我可以在保存更改之前驗證實體嗎?
- 7. 驗證當前employeename,代之以「自我」
- 8. 在Umbraco中同步內容
- 9. 我可以在Shadowbox打開jQuery之前加載內容嗎?
- 10. 什麼可以放在同步塊內?
- 11. Rsync和同步順序
- 12. 通過rsync自動同步
- 13. rsync不同步.htaccess文件
- 14. 驗證內容yii2
- 15. 的CSS之前,不同的內容
- 16. 驗證可點擊內容框的W3C
- 17. Javascript替換內容之前可見
- 18. 在發送到php表單驗證之前試圖驗證captcha與JavaScript之前
- 19. 驗證以前不可見的字段
- 20. 軌動作之前驗證
- 21. 之前的表單驗證
- 22. jQuery驗證之前ajaxForm
- 23. 之前的任何驗證
- 24. Rsync符號鏈接內容
- 25. 隱藏可見內容之前查看下一個內容
- 26. 如何配置rsync以在本地同步2個文件夾
- 27. 在HTML5驗證之前抓取提交
- 28. 在Application_BeginRequest之前驗證請求?
- 29. 在插入之前驗證UUID?
- 30. 在選擇之前驗證JList出現
您是否嘗試過rsync的手冊頁? -c,--checksum 這改變了rsync檢查文件是否已被更改並需要傳輸的方式。如果沒有這個選項,rsync使用「快速檢查」(缺省情況下)檢查每個文件的大小和上次修改的時間是否匹配發送者和接收者。 –