一、背景介绍

由于需要和其他系统进行对接。文件的逻辑地址通过接口传递,而文件的实体需要通过服务器间的同步进行传输。在同事的建议下选择了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. 利用maven开发springMVC项目——开发环境搭建(版本错误解决)

    申明:部分内容参见别人的博客,没有任何的商业用途,只是作为自己学习使用.(大佬博客) 一.相关环境 - eclipse :eclipse-jee-oxygen-3-win32-x86_64(下载地址) ...

  2. Loadrunner之HTTP接口测试

    Loadrunner之HTTP接口测试 接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一个过程. ...

  3. Weex 环境搭建 (一)

    1  安装Node.js 去Node.js 官网  https://nodejs.org/      下载安装文件安装. 安装好后,根据如下命令检查是否安装正常. 在windows 环境下,开始-运行 ...

  4. SSIS中出现数据流数据源假死状态的解决办法

    相信开发过Sql Server SSIS的人都遇到过在数据流中数据源假死的问题,特别是Excel Source特别容易假死,当job执行到数据流中的Excel Source时,既不报错也不执行,也没有 ...

  5. Oracle表分区分为四种:范围分区,散列分区,列表分区和复合分区(转载)

    一:范围分区 就是根据数据库表中某一字段的值的范围来划分分区,例如: 1 create table graderecord 2 ( 3 sno varchar2(10), 4 sname varcha ...

  6. CUDA 版本,显卡驱动,Ubuntu版本,GCC版本之间的对应关系

  7. mitmproxy 在windows上的使用

    mitmproxy 是一个中间件代理, 结合python使用 安装  pip install mitmproxy 在windows上没有mitmproxy 所以只要用mitmdump和mitmwdb ...

  8. 浅析Vue.js 中的条件渲染指令

    1 应用于单个元素 Vue.js 中的条件渲染指令可以根据表达式的值,来决定在 DOM 中是渲染还是销毁元素或组件. html: <div id="app"> < ...

  9. bootstrap表格插件——Bootstrap-Table

    注:本文引用自:http://www.cnblogs.com/wuhuacong/p/7284420.html 一.概述 1.是什么 是一个基于bootstrap的灌数据式的表格插件 2.能干什么 可 ...

  10. 第三次预作业20155231邵煜楠:虚拟机上的Linux学习

    java第三次预作业--虚拟机初体验(学习记录) 学习在笔记本上安装Linux操作系统 通过老师给予的官网链接,下载了VirtualBox-5.1.14-112924-win和Ubuntu-16.04 ...