返回

使用 Launchd 和 rsync 轻松实现 macOS 上的跨卷文件同步

IOS

轻松实现 macOS 中的跨卷文件同步

前言

在现代数字时代,文件同步对于保护数据、促进协作和实现跨设备的无缝文件访问至关重要。macOS 为您提供了强大的工具,例如 launchd 和 rsync,让您可以在不同的驱动器之间轻松同步文件,无论它们是内部存储、外部硬盘还是网络共享。本文将深入探讨如何在 macOS 上配置和使用这些工具来实现跨卷文件同步。

先决条件

在开始之前,请确保您满足以下先决条件:

  • 两个需要同步的 macOS 卷
  • 管理员权限
  • 文本编辑器(例如 TextEdit 或 Sublime Text)

使用 Launchd 和 Rsync 进行跨卷文件同步

1. 创建同步脚本

第一步是创建一个 rsync 脚本,它将定义同步任务。为此,请使用文本编辑器创建一个名为 sync.sh 的新文件并输入以下内容:

#!/bin/bash

# 源卷
SRC="/Volumes/Source"

# 目标卷
DST="/Volumes/Destination"

# 同步选项
OPTS="-avz --delete --progress"

# 执行同步
rsync $OPTS $SRC $DST

请根据实际卷名称修改 SRCDST 变量。

2. 配置 Launchd 作业

下一步是配置一个 Launchd 作业来定期运行同步脚本。这将确保同步任务在后台自动执行。使用以下命令创建一个名为 com.example.sync 的新 plist 文件:

sudo launchctl load -w ~/Library/LaunchAgents/com.example.sync.plist

打开 com.example.sync.plist 文件并粘贴以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.example.sync</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>/path/to/sync.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StartInterval</key>
    <integer>3600</integer>
</dict>
</plist>

请将 /path/to/sync.sh 替换为实际的同步脚本路径。您还可以调整 StartInterval 值以设置同步频率(以秒为单位)。

3. 启动 Launchd 作业

最后,使用以下命令启动 Launchd 作业:

sudo launchctl start com.example.sync

现在,您的跨卷文件同步已配置完毕,并且将按照您指定的频率自动运行。

验证同步

要验证同步是否正常运行,请执行以下步骤:

  1. 在源卷中创建或修改一个文件。
  2. 等待 Launchd 作业运行并完成同步。
  3. 检查目标卷以确认文件已正确同步。

结论

通过利用 launchd 和 rsync 的强大功能,您现在可以在 macOS 上轻松地实现跨卷文件同步。这对于备份数据、简化协作以及在多个设备之间保持文件同步至关重要。本文已深入探讨了如何配置和使用这些工具,从而为您提供了在 macOS 中实现无缝文件同步所需的知识和技能。

常见问题解答

1. 如何更改同步频率?

要更改同步频率,请编辑 com.example.sync.plist 文件并修改 StartInterval 值。

2. 如何在同步脚本中添加更多选项?

您可以在 OPTS 变量中添加额外的 rsync 选项。有关可用选项的完整列表,请参阅 rsync 手册页。

3. 如何处理同步冲突?

如果您遇到同步冲突,则需要手动解决它们。打开目标卷并找到冲突文件。您将看到一个带有 .SYNCFAILED 扩展名的副本。手动比较这两个文件并决定保留哪个版本。

4. 如何从外部驱动器上同步文件?

如果您想从外部驱动器上同步文件,请在 SRCDST 变量中指定驱动器的安装点。

5. 如何对同步进行故障排除?

如果同步出现问题,请检查同步脚本和 Launchd plist 文件中的日志。您还可以使用 rsync --dry-run 命令来查看同步操作而不实际执行它们。