一、背景介绍

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

    在HTML5本地存储——Web SQL Database提到过Web SQL Database实际上已经被废弃,而HTML5的支持的本地存储实际上变成了 Web Storage(Local Stora ...

  2. Quick setup

    Quick setup — if you’ve done this kind of thing before We recommend every repository include a READM ...

  3. javascript中获取dom元素高度和宽度

    javascript中获取dom元素高度和宽度的方法如下: 网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网 ...

  4. HDU 3047 Zjnu Stadium(带权并查集,难想到)

    M - Zjnu Stadium Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Su ...

  5. 如何求出数组中最小(或者最大)的k个数(least k问题)

    输入n个整数,如何求出其中最小的k个数? 解法1. 当然最直观的思路是将数组排序,然后就可以找出其中最小的k个数了,时间复杂度以快速排序为例,是O(nlogn): 解法2. 借助划分(Partitio ...

  6. CentOS7网络连接问题以及重启网络服务失败

    1.重启网络服务失败 在运行“/etc/init.d/network restart”命令时,出现错误“Job for network.service failed. See 'systemctl s ...

  7. LeetCode29.两数相除 JavaScript

    给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor 得到的商. 示例 1: 输 ...

  8. Web—07-JQuery

    jquery是一个函数库,一个js文件,页面用script标签引入这个js文件就可以使用. <script type="text/javascript" src=" ...

  9. 一次tomcat的调优记录

    项目本身需要上传模型,使用的是springboot1.5.3. 上传的模型比较大,下载的过程中就出现了问题(下载是su调用的java接口,其开发并非本人负责,不可更改) 问题在于,下载的时候tomca ...

  10. ibatis运行的SQL语句的输出——通过配置log4j

    将ibatis 的log4j运行级别调到DEBUG可以在控制台打印出ibatis运行的sql语句 ### 设置Logger输出级别和输出目的地 ###log4j.rootLogger=debug,st ...