Rsync
對大量文件進行 inotify 和 rsync
我正在使用 inotify 監視目錄並使用 rsync 在伺服器之間同步文件。同步工作完美,記憶體使用基本上不是問題。但是,最近添加了大量文件 (350k),這影響了性能,特別是 CPU。現在,當 rsync 執行時,CPU 使用率飆升至 90%/100%,並且 rsync 需要很長時間才能完成,有 650k 文件被監視/同步。
有什麼方法可以加快 rsync 並且只 rsync 已更改的目錄?或者,在不同的目錄上設置多個 inotifywaits。正在使用的腳本如下。
更新:我添加了 –update 標誌,用法似乎基本沒有變化
#! /bin/bash EVENTS="CREATE,DELETE,MODIFY,MOVED_FROM,MOVED_TO" inotifywait -e "$EVENTS" -m -r --format '%:e %f' /var/www/ --exclude '/var/www/.*cache.*' | ( WAITING=""; while true; do LINE=""; read -t 1 LINE; if test -z "$LINE"; then if test ! -z "$WAITING"; then echo "CHANGE"; WAITING=""; rsync --update -alvzr --exclude '*cache*' --exclude '*.git*' /var/www/* root@secondwebserver:/var/www/ fi; else WAITING=1; fi; done)
我最終刪除了壓縮選項(z)並將 WAITING var 提高到 10(秒)。這似乎有所幫助,rsync 仍然會增加 CPU 負載,但它的壽命較短。歸功於 unix stackexchange上的答案
您還可以查看具有更多選項的lsyncd 。您可以使用 lua 腳本,然後說出它需要使用多少並發程序,也許還有更多可能感興趣的事情。
這也使用 rsync 和 ionotify。