centos7下最简单的 unison实现文件双向同步图文详解

简介: centos7下最简单的 unison实现文件双向同步图文详解

unison简介

  Unison是一款跨windows/linux/MAC OS平台的文件同步工具,不仅支持本地对本地同步,也支持通过SSH、RSH和Socket等网络协议与远程主机进行同步。最主要的是,Unison支持双向同步操作,即任何一端数据发生改变,都会更新到对端;但是,unison无法实现实时双向同步。

  与rsync区别:rsync同步是单向的,客户端同步服务器端,而客户端进行文件的删除、修改等操作无法同步到服务端。

unison特性

1.支持跨平台同步

2.双向同步,自动更新两份副本中没有冲突的部分,有冲突的部分由用户选择更新策略

3.支持增量同步,每次同步完成后会记录文件状态,下次同步时,以上次的状态为起点开始同步

环境如下:两台虚拟机

vm1:192.168.1.145

vm2:192.168.1.146

一、安装  两台 都安装 ocaml unison

yum install -y ocaml unison

二、配置ssh key信任

原理:

A机生成公钥id_rsa.pub和私钥id_rsa ,公钥id_rsa.pub放到服务器B上重命名为 authorized_keys 用于 ssh登录B服务器

不用root用户,新建用户(建议通过普通用户进行操作,理由是通过root操作本身就危险,免密码登陆的root就更危险了。)

useradd -m unisonadm

passwd  unisonadm   输入两次  Xqh@#123456    两台都添加

在vm1上创建key并配置vm2的信任

在vm1上创建key并配置vm2的信任

[root@vm1 ~]# su – unisonadm

[unisonadm@vm1 ~]$ ssh-keygen -t rsa

在提示保存私钥(key)和公钥(public key)的位置时,使用默认值;

在提示是否需要私钥密码(passphrase)时,直接敲回车,即不使用私钥密码。

之后,将生成一对密钥,id_rsa(私钥文件)和id_rsa.pub(公钥文件),保存在/home/unisonadm/.ssh/目录下。

[unisonadm@vm1 .ssh]$ cd /home/unisonadm/.ssh

[unisonadm@vm1 .ssh]$ ll

 

同样在另一台机上也执行一遍生成同样的

将145的 id_rsa.pub 传到146的:/home/unisonadm/.ssh目录下命名为 authorized_keys(如果146没有对应的目录,先按上面方法在146上执行一遍 创建公钥和私钥 )

[unisonadm@vm1 .ssh]$ scp id_rsa.pub unisonadm@192.168.1.146:/home/unisonadm/.ssh/authorized_keys

 输入unisonadm 密码  Xqh@#123456

同样在146上执行

[unisonadm@vm2 .ssh]$ scp id_rsa.pub unisonadm@192.168.1.145:/home/unisonadm/.ssh/authorized_keys

(后来现可以直接用 ssh-copy-id 92.168.1.146 就过去了

四、Unison的配置与使用 用配置文件同步

默认的配置文件夹位于用户的/.unison,即当前用户的home目录下 /home/unisonadm/.unison/

如果没有创建

[unisonadm@vm1 ~]$ cd /home/unisonadm

[unisonadm@vm1 ~]$ mkdir .unison

[unisonadm@vm1 ~]$ cd .unison

[unisonadm@vm1 ~]$ touch default.prf

[unisonadm@vm1 ~]$ vim  default.prf

这是145的配置

#Unison preferences file 
root = /home/unisonadm/test 
root = ssh://unisonadm@192.168.1.146//home/unisonadm/test/ 
ignore = Path runtime/*   #不同步的文件
ignore = Path application/config.php
ignore = Path application/database.php
ignore = Path LICENSE.txt
batch = true
owner = true 
group = true 
perms = -1 
fastcheck = false 
rsync = false 
sshargs = -C 
xferbycopying = true 
log = true 
logfile = /home/unisonadm/.unison/unison.log

同样146也是

 

[unisonadm@vm2 ~]$ cd /home/unisonadm

[unisonadm@vm2 ~]$ mkdir .unison

[unisonadm@vm2 ~]$ cd .unison

[unisonadm@vm2 ~]$ vim  default.prf

#Unison preferences file 
root = /home/unisonadm/test 
root = ssh://unisonadm@192.168.1.145//home/unisonadm/test/ 
ignore = Path runtime/*   #不同步的文件
ignore = Path application/config.php
ignore = Path application/database.php
ignore = Path LICENSE.txt
batch = true
owner = true 
group = true 
perms = -1 
fastcheck = false 
rsync = false 
sshargs = -C 
xferbycopying = true 
log = true 
logfile = /home/unisonadm/.unison/unison.log

测试(注意权限的问题,root用户创建的文件,不给权限普通用户是没读写权限的,没有权限是没法同步的)

首先分别在vm1与vm2的/home/unisonadm/test/目录下创建文件或目录,然后在vm1上执行unison,接着如果在vm1与vm2上都能看到各自创建的文件,就说明同步成功。

[unisonadm@vm1 ~]$ cd test

[unisonadm@vm1 test]$ touch a.txt

[unisonadm@vm2 ~]$ cd test

[unisonadm@vm2 test]$ touch b.txt

在vm1上执行unison

[unisonadm@vm1 ~]$ unison

在145与146上查看文件是否同步

定期或实时执行同步

如果想要定期执行,则通过crontab计划任务来实现,例如通过以下方式设置每5分钟执行一次

[root@vm1 ~]# su - unisonadm

[unisonadm@vm1 ~]$ crontab -e

 */5 * * * * /usr/bin/unison

 

目录
相关文章
|
8月前
|
Linux 应用服务中间件 nginx
【PUSDN】centos查看日志文件内容,包含某个关键字的前后5行日志内容,centos查看日志的几种方法
【PUSDN】centos查看日志文件内容,包含某个关键字的前后5行日志内容,centos查看日志的几种方法
174 0
|
8月前
|
Java Shell Linux
解决 centos下执行sh文件报错“/bin/bash^M: 坏的解释器:没有那个文件或目录” 问题
解决 centos下执行sh文件报错“/bin/bash^M: 坏的解释器:没有那个文件或目录” 问题
1123 0
|
5月前
|
Linux
2022年超详细如何使用Xftp连接CentOS 7来进行文件的传输【详细过程、图解】
这篇文章提供了使用Xftp工具连接到CentOS 7虚拟机进行文件传输的详细步骤和图解。步骤包括打开Xftp软件、创建新连接、查看并填写虚拟机的IP地址、输入虚拟机的连接账号密码,以及连接成功后进行文件传输。文章最后以"现场手撸、学无止境"作为结束语,鼓励读者不断学习和实践。
|
6月前
|
Linux Shell
Centos定期自动清理临时文件
简单Shell脚本清理临时文件 使用`cron`设置定时任务,如每天8点运行: 记得调整路径和脚本名以匹配你的环境。
144 5
|
7月前
|
Perl
Centos8同步时间(阿里云NTP服务为例)
Centos8同步时间(阿里云NTP服务为例)
883 1
|
6月前
|
缓存 Linux 开发工具
centos设置ntp服务同步目标服务器时间
【7 月更文挑战第 1天】linux+centos设置ntp服务同步目标服务器时间
|
7月前
|
Linux
Centos7同步时间(阿里云NTP服务为例)
Centos7同步时间(阿里云NTP服务为例)
1891 0
|
8月前
|
Linux
Centos7.4升级7.9失败,救援:/boot目录下文件丢失error: file ‘/initramfs-3.10.0-957.el7.x86_64.img‘ not found
以上步骤应该可以帮助你解决问题。如果问题仍然存在,可能需要更深入的排查。
201 1
|
8月前
|
存储 关系型数据库 Linux
CentOS如何使用Docker部署Plik服务并实现公网访问本地设备上传下载文件
CentOS如何使用Docker部署Plik服务并实现公网访问本地设备上传下载文件
104 4