
我有一台一直開機的 Mac,它是我的主電腦。我還有一台 MacBook,我正在嘗試同步我的 iPhoto 圖庫。這樣我就可以成功使用rsync來同步檔案了。我使用 cron 讓它每天運行一次。
實際上,MacBook 並不總是處於開啟狀態,因此我正在尋找一種在兩台電腦連接到相同 wifi 網路時運行 rsync 的方法。所以我猜最好的地方是在機場連接時以某種方式運行 rsync 。最好的方法是什麼?
答案1
由於 rsync 只更改需要更改的內容,因此每小時執行 cron 作業並沒有什麼壞處。如果要複製的內容很少或根本沒有內容,則只需很少的時間。但您不希望該作業掛起,因此您可以建立一個小型 shell 腳本來檢查您的 MacBook 是否已啟動,如果已啟動,請讓它執行 rsync 命令。以防萬一出現問題並且 rsync 作業掛起或花費超過一小時,您需要確保在前一個實例仍在運行時不會啟動新實例。這是一個範例腳本(我將其稱為 MyRsyncJob,您必須對其進行修改):
[ -s /var/run/MyRsyncJob ] && {
PID=$(cat /var/run/MyRsyncJob)
echo "MyRsyncJob is still running (PID $PID)" >&2
exit 1
}
ping -c 1 -o MacBook >&- || exit 1 # Exit if MacBook isn't reachable
trap 'rm /var/run/MyRsyncJob' 0 15 # Remove run file upon exit or TERM signal
echo $$ >> /var/run/MyRsyncJob # Put PID into run file
rsync -zave ssh /path/to/my/iphoto/library/ MacBook:/path/to/destination/directory
我希望這有幫助。