一、背景介绍

由于需要和其他系统进行对接。文件的逻辑地址通过接口传递,而文件的实体需要通过服务器间的同步进行传输。在同事的建议下选择了rsync。

二、RSYNC介绍

RSYNC 有多种方式进行同步,本篇文章主要叙述的是其中,两种远程服务器的同步配置。(在客户端 注意命令中“:” 冒号的个数)

要了解更多关于rsync的内容,请跳转到 http://man.linuxde.net/rsync 阅读相关文档。

三、实际操作

3.1 确认机器是否安装rsync

3.2 配置rsync的文件

以下是本次配置中rsyncd.conf的内容:

  uid = root
gid = root
use chroot = no
max connections = 2000
port = 8973
timeout = 900
log file = /var/run/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log format = %t%a%m%f%b
commemt = rsync
list = yes
read only = yes
write only = no
auth users = apprsync
secrets file = /etc/rsyncd.secret
ignore errors = yes
hosts allow = 172.21.5.164 ###########################之上是全局定义 之下是模块单独定义
[rsyncvideo]
path = /app/nas/video
[rsyncimage]
path = /app/nas/image

3.2.1全局定义(直接配置请跳过本段)

  在rsync 服务器中,全局定义有几个比较关健的,根据我们前面所给的配置文件 rsyncd.conf 文件;

  pid file = /var/run/rsyncd.pid   注:告诉进程写到 /var/run/rsyncd.pid 文件中;
  port = 873  注:指定运行端口,默认是873,可以自己指定;本次这里选择了8973(在之后的客户端请求会有不一样的地方)
  uid = nobody   
  gid = nobdoy

  注:服务器端传输文件时,要发哪个用户和用户组来执行,默认是nobody。 如果用nobody 用户和用户组,可能遇到权限问题,有些文件从服务器上拉不下来。所以我就偷懒,为了方便,用了root 。不过可以在定义要同步的目录时定义的模块中指定用户来解决权限的问题。

  use chroot = yes

  注: 安全相关,默认为true,修改为no,增加对目录文件软连接的备份

  read only = yes

  注:read only 是只读选择,也就是说,不让客户端上传文件到服务器上。还有一个 write only选项, # no客户端可下载文件,yes不能下载;

  max connections = 5

  注:客户端最多连接数

  log file = /var/log/rsync.log

  注:rsync 服务器的日志;

  log format = %t %a %m %f %b
      注 日志格式  

timeout = 300

注 超期时间

auth users = apprsync

注 执行数据同步的用户名,可以设置多个,用英文状态下逗号隔开(此处是使用模块同步时使用到的用户名与ssh不一样)。

  #limit access to private LANs

  hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0

  注:可以指定单个IP,也可以指定整个网段,能提高安全性。格式是ip 与ip 之间、ip和网段之间、网段和网段之间要用空格隔开;

3.2.2 局部配置(直接配置请跳过本段)

由于需要同步两个不同的文件夹,所以在此处配置两个模块分别定义为 rsyncvideo 和 rsyncimage,也就是同步图片和视频的两个文件夹分别指向两个不同的地址。

3.3 创建为模块同步方式的用户和密码

我们在之前配置的时候 写入了

  auth users = apprsync
secrets file = /etc/rsyncd.secret

因此我们要在 指定的路径(/etc/rsyncd.secret) 建立一个指定的用户(apprsync)即可 密码设置为123456.注意此处 需要把该文件的权限设置为600。

3.4 创建为 ssh同步方式的用户和密码

由于我们这篇文章主要是讲解实现了两种同步方式。两个可以并存和单独使用。

创建用户

sudo useradd -d "/home/apprsync" -m -s "/bin/bash" apprsync

设置密码
passwd apprsync;(敲完这个命令之后两次输出)

3.5启动rsync守护进程,并写入开机自启动

设置开机自启动,写入到/etc/rc.local里面

vim /etc/rc.local

 # rsync server progress
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf

3.6 两种不同的客户端同步命令

3.6.1使用模块同步

同步模块rsyncimage中的内容

在之前配置的

hosts allow = 172.21.5.164 这台目标机器中

输入命令  rsync -avz --delete --port 8973 apprsync@172.21.5.163::rsyncimage /usr/local/image

同步模块rsyncvideo中的内容 ,与上面相似

3.6.2 使用SSH同步

在之前配置的

hosts allow = 172.21.5.164 这台目标机器中

输入命令

rsync -avz --delete apprsync@172.21.5.163:/app/nas/video /usr/local/test

注意 此处并没有指定端口 同时少了一个冒号 并且指定了想要同步的目标地址

其中中间一次是我弄出一个错误  在模块同步的时候输入了ssh用户的密码 所以导致了认证失败。

由此,两种方式的同步就到此完毕。

四、可能遇到的问题

请不要把两种同步方式弄混了。主要是认证与路径的问题。

路径最后要注意不要有空格,否则会导致找不到对应的路径。

linux 同步 rsync的使用——远程服务器同步配置的更多相关文章

  1. Linux下Rsync+sersync实现数据实时同步

    inotify 的同步备份机制有着缺点,于是看了sersync同步,弥补了rsync的缺点.以下转自:http://www.osyunwei.com/archives/7447.html 前言: 一. ...

  2. Linux下Rsync+Inotify-tools实现数据实时同步

    Linux下Rsync+Inotify-tools实现数据实时同步 注意:下面的三个案例都是rsync 每次都是全量的同步(这就坑爹了),而且 file列表是循环形式触发rsync ,等于有10个文件 ...

  3. linux SSH免密码登录远程服务器

    背景:无密码登录,所谓的无密码登录其实是指通过证书认证的方式登录,使用一种‘公私钥’认证的方式来进行ssh登录 在linux系统中,ssh是远程登录的默认工具,因为该工具的协议使用了RSA/DSA的加 ...

  4. [sersync+rsync] centos6.5 远程文件同步部署记录

    针对本地文件的修改,自动同步到远程文件夹,远程备份很方面.研究了下大家的主流同步方案一般是 rsync+inotify和rsync+sersync, 我这里使用sersync的方案,当然大部分都是参照 ...

  5. Centos7 rsync+inotify两台服务器同步文件(单向)

    注:本篇介绍的是单向同步,即A文件同步到B,但B的文件不同步到A,双向同步的在下一篇文章中. rsync与inotify不再赘述,直接进入实战. 0.背景 两台服务器IP地址分别为: 源服务器:192 ...

  6. Linux基础命令---ntpstat显示时间服务器同步

    ntpstat ntpstat指令用于显示本机上一次和服务器同步时间的情况. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora.   1.语法 ntpstat   2 ...

  7. Linux 笔记 #03# 在 Debian远程服务器上运行 Java socket程序

    我试图做什么:把我的破代码放到服务器上运行,并成功与客户端进行 socket通信. 预备环境:刚安装好 MySQL 和 JVM 的 Linux远程服务器(Debian 8)一台. 主要有如下几个步骤: ...

  8. Linux 系统免密码登陆远程服务器

    在当前Linux生成公钥私钥ssh-keygen公钥私钥存放路径为:~/root/.ssh/id_rsa id_rsa.pub 登陆被远程主机,进入目录~/root/.ssh/是否存在authoriz ...

  9. (转)Linux使用RSA密钥登录远程服务器

    一切操作都在本机执行,不需要进入远程主机/服务器~~ 1.生成密钥.默认生成的是rsa加密. ssh-keygen 2.私钥是给本地的,公钥是给远程的.下面将公钥上传到远程服务器 ~ ssh-copy ...

随机推荐

  1. webpack4配置

    一.安装webpack 需要先在项目中npm init初始化一下,生成package.json 建议node版本安装到8.2以上 // webpack4中除了正常安装webpack之外,需要再单独安一 ...

  2. vim全选复制粘贴

    感谢来源:http://blog.sina.com.cn/s/blog_6e70abbd0100zbk9.html ggVG #gg: 光标跳转到首行,在vim才有效,vi中无效 #V 是进入Visu ...

  3. ionic 入门创建第一个应用demo

    一.ionic卸载 1.清除旧版本的ionic框架 npm uninstall -g ionic npm uninstall -g cordova npm cache clear npm cache ...

  4. SQL Server 数据库空间使用情况

    GO /****** Object: StoredProcedure [dbo].[SpaceUsed] Script Date: 2017-12-01 11:15:11 ******/ SET AN ...

  5. redis 安装 配置 及启动

    linux下安装redis及其中遇到的问题的解决方法1.将下载好的压缩包放到/usr/local目录下# tar xzf redis-3.0.2.tar.gz# cd redis-3.0.2# mak ...

  6. canvas转img,blob相互转换

    摘自:https://www.cnblogs.com/jyuf/p/7251591.html 函数都比较简单,直接看就ok了 /*----------------------------------- ...

  7. Ubuntu如何挂载U盘

    1. 以root用户登陆 2. 查看当前挂载 fdisk -l 一般情况未挂载的硬盘都在最后,这里是/dev/sdb1 3.新建一个目录来挂载硬盘 挂载到MNT/usb root@h-Default- ...

  8. Python实现创建字典

    编写一个名为 make_album() 的函数,它创建一个描述音乐专辑的字典.1.这个函数应接受歌手的名字和专辑名,并返回一个包含这两项信息的字典.使用这个函数创建三个表示不同专辑的字典,并打印每个返 ...

  9. js节点操作实例

    写了一个简单的小例子来引用js实例 1. 初步节点操作: 2.兼容性节点操作: 3.节点的类型,名字: 4.使用setAttribute设置属性 5.节点复制操作: 6.删除和替换节点 如有错误,还望 ...

  10. C# 数组集合分页 Skip Take

    var input=new input(); var personList= new List<Person>(); //一个查询集合 var Total = personList.Cou ...