Unison 是一个强大的双向文件同步工具,适用于多种操作系统,包括 Linux、macOS 和 Windows。与 rsync
不同,Unison
专为双向同步设计,能够有效处理文件冲突和变化检测。
Unison 的主要特点
- 双向同步:能够在两个目录之间进行双向同步,确保两个目录内容一致。
- 冲突检测:自动检测文件冲突并提示用户进行处理。
- 跨平台:支持多种操作系统,可以在不同平台之间进行同步。
- 高效:只传输发生变化的文件部分,节省带宽和时间。
- 安全:支持通过 SSH 进行加密传输。
安装 Unison
在 Ubuntu 上,你可以通过以下命令安装 Unison:
sudo apt update
sudo apt install unison
在 macOS 上,可以使用 Homebrew 安装:
brew install unison
在 Windows 上,可以从 Unison 官方网站 下载可执行文件。
在 NAS 上,同样从Unison 官方网站 下载可执行文件。
注意,在QNAP系统,直接复制到 /bin
文件夹下就可以。
使用 Unison 进行同步
假设你有一个本地目录 /home/user/Documents
和一个远程目录 user@192.168.1.100:/volume1/Backup/Documents
,以下是使用 Unison 进行同步的基本步骤:
1. 初始同步
首次同步时,Unison 会创建一个配置文件并进行初始同步。运行以下命令:
unison /home/user/Documents ssh://user@192.168.1.100//volume1/Backup/Documents -sshargs "-p 2012"
/home/user/Documents
是本地目录。ssh://user@192.168.1.100//volume1/Backup/Documents
是远程目录,使用 SSH 进行连接。-sshargs "-p 2012"
指定 SSH 使用的端口号。
2. 处理冲突
在同步过程中,如果检测到文件冲突,Unison 会提示你选择如何处理冲突。你可以选择保留本地版本、远程版本或手动合并。
3. 定期同步
为了定期自动同步,可以创建一个脚本并使用 cron
定时任务来定期执行这个脚本。
创建一个脚本文件,例如 unison_sync.sh
:
#!/bin/bash
unison -batch /home/user/Documents ssh://user@192.168.1.100//volume1/Backup/Documents -sshargs "-p 2012"
保存并关闭文件,然后使脚本可执行:
chmod +x unison_sync.sh
编辑 cron
表:
crontab -e
添加一行来设置定时任务,例如每小时运行一次:
0 * * * * /path/to/unison_sync.sh
Unison 配置文件 [推荐]
Unison 还支持使用配置文件来简化命令行参数。配置文件通常位于 ~/.unison
目录下,文件名以 .prf
结尾。
创建或编辑一个配置文件,例如 default.prf
:
root = /home/user/Documents
root = ssh://user@192.168.1.100//volume1/Backup/Documents
sshargs = -p 2012
auto = true
batch = true
root
:定义同步的两个根目录。sshargs = -p 2012
:指定 SSH 使用的端口号。auto
:自动处理非冲突的更改。batch
:批处理模式,不进行交互提示。``
总结
Unison 是一个功能强大的双向同步工具,适用于需要在多个设备或平台之间保持文件一致性的场景。通过配置文件和定时任务,可以实现自动化和高效的文件同步。