我有一台始终开机的 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
我希望这能有所帮助。