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

 

目录
相关文章
|
9天前
|
Linux 应用服务中间件 nginx
【PUSDN】centos查看日志文件内容,包含某个关键字的前后5行日志内容,centos查看日志的几种方法
【PUSDN】centos查看日志文件内容,包含某个关键字的前后5行日志内容,centos查看日志的几种方法
64 0
|
7月前
|
JSON Linux 数据格式
百度搜索:蓝易云【Centos 7 通过 targz 文件安装 Elastic Search 服务教程!】
请注意,本教程提供了基本的安装步骤,并且可以根据实际需求进行定制和配置。如果需要更深入的了解和配置,请参考Elasticsearch官方文档或其他权威资源。
287 0
|
9天前
|
缓存
详解CentOS8更换yum源后出现同步仓库缓存失败的问题
详解CentOS8更换yum源后出现同步仓库缓存失败的问题
161 0
|
9天前
|
网络协议 Unix Linux
Centos下nfs+rpcbind实现服务器之间的文件共享
Centos下nfs+rpcbind实现服务器之间的文件共享
121 0
|
7月前
|
Linux
百度搜索:蓝易云【Centos系统服务器设置时间自动同步!】
通过以上步骤,您可以在CentOS系统服务器上设置时间自动同步。NTP服务将定期与配置的NTP服务器进行通信,以确保系统时间的准确性和同步。
724 0
|
9天前
|
Java Shell Linux
解决 centos下执行sh文件报错“/bin/bash^M: 坏的解释器:没有那个文件或目录” 问题
解决 centos下执行sh文件报错“/bin/bash^M: 坏的解释器:没有那个文件或目录” 问题
110 0
|
9天前
|
Linux
Centos7.4升级7.9失败,救援:/boot目录下文件丢失error: file ‘/initramfs-3.10.0-957.el7.x86_64.img‘ not found
以上步骤应该可以帮助你解决问题。如果问题仍然存在,可能需要更深入的排查。
43 1
|
9天前
|
存储 关系型数据库 Linux
CentOS如何使用Docker部署Plik服务并实现公网访问本地设备上传下载文件
CentOS如何使用Docker部署Plik服务并实现公网访问本地设备上传下载文件
38 4
|
9天前
|
Linux API 网络安全
centos7 图文详解精确同步企业实战 rsync include 同步指定文件exclude排除文件
centos7 图文详解精确同步企业实战 rsync include 同步指定文件exclude排除文件
11 0
|
9天前
|
Linux
centos7实现磁盘挂载,解挂,开机自动挂载,解决挂载文件覆盖问题
centos7实现磁盘挂载,解挂,开机自动挂载,解决挂载文件覆盖问题
172 0

热门文章

最新文章