一、背景介绍

由于需要和其他系统进行对接。文件的逻辑地址通过接口传递,而文件的实体需要通过服务器间的同步进行传输。在同事的建议下选择了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. Gradle Goodness: Display Available Tasks

    To see which tasks are available for our build we can run Gradle with the command-line option -t or ...

  2. WAPM环境配置(PHP入门2)

    WAMP介绍 W:Window:开源免费 A:Apache:开源免费 M:MySQL:开源免费 P:PHP:开源免费 Apache下载 Apache下载地址:https://www.apachehau ...

  3. activiti获取到流程图节点信息之任务节点

    //获取bpmnModel对象 BpmnModel model1 = new BpmnJsonConverter().convertToBpmnModel(modelNode); //由于我们这里仅仅 ...

  4. TCL-事务

    一.含义事务:一条或多条sql语句组成一个执行单位,一组sql语句要么都执行要么都不执行二.特点(ACID)A 原子性:一个事务是不可再分割的整体,要么都执行要么都不执行C 一致性:一个事务可以使数据 ...

  5. java 字节流文件复制方法总结

    1.使用字节流每次读写单个字节 public static void main(String[] args) throws IOException { FileInputStream fis = ne ...

  6. [已解决]Vistual Stdio 2015 installer Bootstrapper Packages 路径

    VS2015 installer 的预装包的地址变更成 C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Pac ...

  7. 新增时json类型报错

    新增时出错:如下 实体类中字段类型没有对应上,vue页面中修改跳转页面的路径:使用params...

  8. 大数据学习之Hadoop快速入门

    1.Hadoop生态概况 Hadoop是一个由Apache基金会所开发的分布式系统集成架构,用户可以在不了解分布式底层细节情况下,开发分布式程序,充分利用集群的威力来进行高速运算与存储,具有可靠.高效 ...

  9. 100-Days-Of-ML-Code 评注版(Day 2)

    Day2_Simple_Linear_Regression(一元线性回归) 本文引用自 Simple Linear Regression, 对其中内容进行了评注与补充说明. 回归分析是一种预测性的建模 ...

  10. 用例程解释create_singlethread_workqueue与create_workqueue的区别

    用例程解释create_singlethread_workqueue与create_workqueue的区别 系统版本:linux3.4 使用create_singlethread_workqueue ...