上一篇 下一篇 分享链接 返回 返回顶部

如何使用Unison在服务器之间同步文件?

发布人:Minchunlin 发布时间:2021-01-23 16:24 阅读量:1644

本教程将向您展示如何在Debian系统上设置和使用Unison文件同步工具。使用Unison,您可以在同一系统中的两个不同磁盘或目录之间,或通过网络在两个其他系统之间同步文件。

如何在Debian 10上安装Unison

Unison是一种流行的工具;因此,可以在主要Linux发行版的官方存储库中找到它。

要在Debian上安装Unison的命令行版本,请开始更新系统:

sudo apt-get update && sudo apt-get upgrade

接下来,使用简单的apt to命令安装该工具。

sudo apt-get install unison -y

如果您的系统上安装了桌面环境,并且希望使用该工具的GUI版本,请使用以下命令安装unison-gtk:

sudo apt-get install unison-gtk

注意:确保在要在它们之间同步文件的两个版本的系统上安装Unison。为了实现兼容性并最大程度地减少出错的可能性,最好在两个系统中都使用相同版本的Unison。

如何与Unison同步文件

Unison为我们提供了使用直接套接字连接和SSH在本地计算机和远程计算机之间同步文件和目录的方法。由于我们正在两个Debian服务器之间进行同步,因此我们将跳过本地计算机同步。

通过SSH进行Unison远程和远程同步

要在远程计算机之间同步文件和目录,您将需要在两个系统中都安装Unison,并具有对系统及其IP地址的SSH访问权限。

您还可以将本地计算机用作一台服务器,将远程设备用作另一台服务器。

192.168.0.200 –服务器1

192.168.0.201 –服务器2

第一步是在远程服务器上创建私钥和公钥。

快速跳过密钥生成过程并保存文件。请不要添加密码,因为它会阻碍服务器之间的不受监控的同步。

接下来,使用以下命令将密钥从server1复制到server2:

ssh-copy-id 192.168.0.201

现在,您都在两个系统上都设置了SSH,可以启动Unison同步文件和目录。

让我们通过创建将在server1上同步的目录来测试两台服务器上Unison的使用:

mkdir -p /dir1

在server2上,创建一个以上目录

mkdir -p /dir2

如前所述,Unison尊重用户权限。因此,最好更改两个目录中的权限和所有权,以确保两个目录都具有读取和写入权限。

接下来,在目录dir1中添加所有希望在服务器之间同步的数据。例如,添加一些zip文件。

sudo mv ~/Documents.zip /dir1

有了这些文件,我们希望在正确的目录中进行同步,运行unison命令以从服务器之一进行同步,如下所示:

unison /dir1 ssh://192.168.0.201//dir2

在首次发布Unison时,您会收到一条警告,通知您同步过程可能需要一段时间。如果目录中有大文件,这可能需要一段时间,但是由于我们仅将其用于测试目的,因此它应该相对较快。

按Enter开始同步过程。同步过程完成后,转至server2,导航至dir2,并将目录内容列出为:

cd /dir2 && ls -la

-rw-r--r-- 1 root root  436 Jan  5 12:57 Documents.zip

修改Unison配置

在大多数情况下,我们不希望在这些服务器之间以交互方式同步文件,因为该过程重复且效率低下。我们可以编辑Unison配置文件以允许自动同步文件。

使用以下命令来编辑默认配置文件:

sudo vi ~/.unison/default.prf

在文件中,添加以下行:

auto=true

batch=true

以上各行在同步文件时禁用了提示,从而使过程自动化。

设置Unison Cronjob

可以肯定的是,程序员非常反对手动执行操作,尤其是在可以实现自动化的情况下(在这里就是这种情况)。我们可以为Unison设置一个cronjob以自动执行同步。

在server1中,创建一个简单的bash脚本以如下方式运行统一命令:

sudo touch /usr/bin/unisoncron && sudo vi /usr/bin/unisoncron

在文件中,以shebang开头并添加统一同步命令:

#!/bin/bash/

unison /dir1 ssh://192.168.0.201//dir2

与往常一样,使脚本具有执行权限:

sudo chmod 755 /usr/bin/unisoncron

现在使用crontab编辑您的cronjob文件:

sudo crontab -e

如果这是您第一次编辑crontab,请选择编辑器,然后输入以下行以每1小时与Unison同步一次:

*/60 * * * * /usr/bin/unisoncron &> /dev/null

您还可以将crontab设置为在一天的特定时间运行。您也不需要使用脚本,可以在crontab中使用原始命令。

本教程向您展示了如何在Debian系统上安装和设置Unison以进行文件和目录同步。

目录结构
全文