分享最新优惠信息
购买主机更加划算

Linux系统安装Unison软件以实现双向文件同步的示例演示

对于Linux用户来说,在多台机器之间保持文件同步是一项常见任务。有时候可能同时使用笔记本电脑和台式机,管理家庭服务器和VPS,或者只是需要重要文件的额外副本备份。

如果是简单的备份,rsyncscp等工具效果很好,但如果你在两个Linux系统上都进行了更改,单向同步是不够的,毕竟可能会面临覆盖文件或丢失更新的风险。

这种情况下,Unison File Synchronizer(文件同步器)就派上了用场,它是一种双向同步工具,可以比较两侧的目录、检测变化并更新它们,以便两个位置始终保持一致。接下来将演示在Linux上按照和使用Unison文件同步器的一些基础知识。

Unison文件同步器

在Linux系统上安装Unison

实际上可以从Linux发行版的软件包仓库安装Unison,也可以下载稳定版本。对于大多数用户来说,从仓库安装是最简单的方法:

sudo apt install unison  [Debian、Ubuntu和Mint]
sudo dnf install unison  [RHEL/CentOS/FedoraRocky/AlmaLinux]
sudo apk add unison  [Alpine Linux]
sudo pacman -S unison  [Arch Linux]
sudo zypper install unison  [OpenSUSE]    
sudo pkg install unison  [FreeBSD]

如果想要GUI版本,则可以使用以下命令安装它,不过GUI版本(unison-gtk)仅在基于Debian的发行版上可用:

sudo apt install unison-gtk

安装完成,使用以下命令验证版本:

unison -version

重要提示Unison对版本兼容性要求严格。如果你计划在两个Linux系统(例如,一台笔记本电脑和一台VPS)之间同步,则两者必须安装完全相同版本的Unison。否则,系统将拒绝连接。

Unison基本本地同步

在通过网络使用Unison之前,最好先同步同一台机器上的两个文件夹,这将简单帮你了解Unison工作原理,同时无需担心远程连接或SSH(安全外壳协议)相关的问题。

假设你有两个文件夹:

  • ~/Documents/work→主要工作文件夹
  • ~/Backup/work_sync→备份文件夹

要同步这些文件夹,请运行以下命令:

unison ~/Documents/work ~/Backup/work_sync

以下是该命令的详细工作步骤说明:

  • 比较:Unison扫描两个目录并比较文件名、大小和时间戳
  • 报告差异:列出了两个文件夹之间的所有差异
  • 用户确认:如果有变化,Unison会询问你做什么:从左到右复制文件,从右到左复制文件,还是跳过它们
  • 同步:一旦确认,Unison会更新两个目录以使它们匹配

提示仅存在于一个文件夹中的文件会自动复制到另一个文件夹。如果文件在两个文件夹中都存在,但有不同的修改,Unison会提示你解决这个冲突。

这种双向同步的方式使Unison比单纯使用cp或rsync进行单向同步更安全。你可以在任何一方编辑文件,而不必担心丢失更新内容。

跨远程系统同步(使用SSH)

接下来让我们通过SSH在两台不同的机器之间同步文件,这意味着连接是加密且安全的。

这里假设你想要将本地~/Projects文件夹与远程服务器同步,那么输入以下命令:

unison ~/Projects ssh://username@server-ip//home/username/Projects

以下是该命令的详细说明:

  • ~/Projects→ 你想要同步的本地目录
  • ssh://username@server-ip//home/username/Projects→ 远程机器上的完整路径,通过SSH访问
  • 请注意主机名后的双斜杠(//):它们表示完整路径而不是相对路径

专业提示建议设置基于SSH密钥的身份验证,这样就不必每次都输入密码,如果你以后想要自动执行同步任务,这一点至关重要。

使用配置文件实现自动化

每次输入冗长的Unison命令可能会很繁琐。幸运的是,Unison允许你创建配置文件,这些文件是为重复执行的同步任务保存的指令集。配置文件存储在~/.unison/目录下,扩展名为.prf。

创建一个新的配置文件:

nano ~/.unison/work.prf

添加以下内容:

root = /home/youruser/Documents/work
root = ssh://username@server-ip//home/username/Documents/work

auto = true
batch = true
prefer = newer

以下是每个选项的详细解释:

  • root→ 定义要同步的文件夹(本地和远程)
  • auto = true→ 自动执行同步,无需确认
  • batch = true→ 以非交互模式运行(对于脚本或cron作业有用)
  • prefer = newer→ 如果发生冲突,则保留最近修改时间的文件

现在只需运行以下命令,Unison将自动使用您的配置文件,无需每次都输入长命令。

unison work

运行连续同步(实时模式)

有时候你希望一种持续监控目录的观察模式,使目录在发生变化时自动保持同步,则可以输入以下命令:

unison work -repeat watch

使用此命令的作用在于:

  • Unison会持续扫描你的目录以查找更改
  • 任何一方添加或修改的文件都会自动同步
  • 这对于文件不断更新的开发项目特别有用

注意如果目录很大,监视模式可能会消耗更多的系统资源,因此请合理地使用它。

使用Cron安排同步任务

如果你更喜欢定期同步而不是持续监控,那么可以使用cron任务来安排Unison自动运行。

首先,编辑crontab:

crontab -e

添加以下行以每小时同步一次你的配置文件:

0 * * * * unison work -batch

以下是该命令的详细说明:

  • 0 * * * *→ 每小时运行一次
  • unison work -batch→ 以非交互模式执行你的工作配置文件

应该了解的常见Unison选项

以下是有用的Unison选项,可用快速的进行简单了解:

选项 描述
-auto 自动解决简单更新
-batch 无需用户提示即可运行(对cron有用)
-ui text 强制终端文本模式界面
-repeat watch 持续监视文件夹的变化
-prefer newer 保留最近修改的文件,以免发生冲突

组合选项示例如下:

unison work -auto -batch -prefer newer

这将自动运行同步,通过保留较新的文件来解决冲突,并且不会提示你。

为什么选择Unison而不是其它工具

以下是选择Unison工具的特色优势,可用结合自身实际使用需求合理选用:

工具 同步类型 双向 可用的GUI 用例
rsync/scp 单程 备份、服务器镜像
Unison 双向 ✅(GTK) 跨机器的活动项目

结论

总而言之,Unison是一款轻量级但功能强大的工具,适合需要在多台Linux机器之间保持一致性的用户。与rsync等单向工具不同,它允许你安全地双向同步文件,防止意外覆盖和文件丢失,在某些使用场景下,其作用表现非常大。

未经允许不得转载:惠主机 » Linux系统安装Unison软件以实现双向文件同步的示例演示