rsync 安装使用详解

RSYNC软件介绍:

rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的特性如下:
可以镜像保存整个目录树和文件系统。
可以很容易做到保持原来文件的权限、时间、软硬链接等等。
无须特殊权限即可安装。
优化的流程,文件传输效率高。
可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
支持匿名传输,以方便进行网站镜象。
软件下载
rysnc的主页地址为:
http://rsync.samba.org/
目前最新版本为2.4.6。可以选择从原始网站下载:
http://rsync.samba.org/ftp/rsync/

一、下载、安装rsync

#tar zxvf rsync-2.6.9.tar.gz
#cd rsync-2.6.9
#./configure --prefix=/usr/local/rsync
#make 
#make install 
**** 正常安装RH的时候是带RSYNC的,运行文件放在/usr/bin/rsync 

二、配置rsync server

1、启动RSYNC
#vi /etc/xinetd.d/rsync
把原来的YES改成NO
service rsync
{disable = nosocket_type     = streamwait            = nouser            = rootserver          = /usr/bin/rsyncserver_args     = --daemonlog_on_failure  += USERID
}
随系统启动RSYNC
#chkconfig rsync on
2、配置/etc/rsyncd.conf(需要手动生成)
rsyncd.conf的参数写在上边就是全局参数和写在模块里的就是模块参数
#vi /etc/rsyncd.conf
全局参数
uid = root                      //运行RSYNC守护进程的用户
gid = root                      //运行RSYNC守护进程的组
use chroot = no                 //不使用chroot
max connections = 4             // 最大连接数为4
strict modes =yes               //是否检查口令文件的权限
port = 873                      //默认端口873模块参数
[backup]                     //这里是认证的模块名,在client端需要指定
path = /home/backup/         //需要做镜像的目录,不可缺少!
comment = This is a test     //这个模块的注释信息 
ignore errors                //可以忽略一些无关的IO错误
read only = yes              // 只读   no:可读可写
list = no                    //不允许列文件清单
auth users = hening             //认证的用户名,这个名字是服务器端实实在在存在用户,如果没有这行则表明是匿名,此用户与系统无关
secrets file = /etc/rsync.pas           //密码和用户名对比表,密码文件自己生成
hosts allow = 192.168.1.1,10.10.10.10   //允许主机
hosts deny = 0.0.0.0/0                  //禁止主机
#transfer logging = yes
注释:下面这些绿色文件是安装完RSYNC服务后自动生成的文件
pid file = /var/run/rsyncd.pid      //pid文件的存放位置
lock file = /var/run/rsync.lock     //锁文件的存放位置
log file = /var/log/rsyncd.log      //日志记录文件的存放位置
3、配置rsync密码(在上边的配置文件中已经写好路径) /etc/rsync.pas(名字随便写,只要和上边配置文件里的一致即可),格式(一行一个用户)
账号:密码
#vi /etc/rsync.pas
例子:
Hening:111111
权限:因为rsync.pas存储了rsync服务的用户名和密码,所以非常重要。要将rsync.pas设置为root拥有, 且权限为600。
#cd /etc
#chown root.root rsync.pas 
#chmod 600 rsync.pas
3.rsyncd.motd(配置欢迎信息,可有可无)
# vi /etc/rsyncd.motd
rsyncd.motd记录了rsync服务的欢迎信息,你可以在其中输入任何文本信息,如:
Welcome to use the rsync services!
4、让配置生效
#service xinetd restart

如果报错:xinetd: 未被识别的服务,执行

#yum -y install xinetd

三、启动rsync server

 RSYNC服务端启动的两种方法
1、启动rsync服务端(独立启动)
#/usr/bin/rsync --daemon
2、启动rsync服务端 (有xinetd超级进程启动)
# /etc/rc.d/init.d/xinetd reload
(reload一般只是从新读取一次配置文件。restart则是把进程停掉,从头启动一次。restart自然也就reload了。但是对于大型服务,restart可能不方便。)

四、加入rc.local 

在各种操作系统中,rc文件存放位置不尽相同,可以修改使系统启动时把rsync --daemon加载进去。
#vi /etc/rc.local
加入一行/usr/bin/rsync --daemon

五、检查rsync

#netstat -a | grep rsynctcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN  

六、配置rsync client 

1、设定密码
#vi /etc/rsync.pas
111111
修改权限
#cd /etc
#chown root.root rsync.pas 
#chmod 600 rsync.pas
2、client连接SERVER
  从SERVER端取文件
/usr/bin/rsync -vzrtopg --progress --delete hening@192.168.0.217::backup /home/backup --password-file=/etc/rsync.pas
  向SERVER端上传文件
/usr/bin/rsync -vzrtopg --progress --password-file=/root/rsync.pas  /home/backup hening@192.168.0.217::backup
  这个命令将把本地机器/home/backup目录下的所有文件(含子目录)全部备份到RSYNC SERVER(172.20.0.6)的backup模块的设定的备份目录下。
  请注意如果路径结束后面带有"/",表示备份该目录下的东东,但不会创建该目录,如不带"/"则创建该目录。
  RSYNC用法:
    rsync [OPTION]... [USER@]HOST::SRC  [DEST]              #从RSYNC SERVER备份文件到本地机器rsync [OPTION]... SRC [SRC]...      [USER@]HOST::DEST   #从本地机器备份文件到RSYNC SERVER
3、自动运行
1)vi /usr/local/rsync/time.sh     //制作脚本文件
把下边的内容复制进去
#!/bin/bash
/usr/bin/rsync -vzrtopg --progress --delete hening@192.168.0.217::backup /home/backup --password-file=/etc/rsync.pas
2) 定时执行

crontab -e
加入55 * * * * /usr/local/rsync/time.sh        //每55分运行一次time.sh脚本文件

七、iptables

iptables -A INPUT -p tcp -s ! 11.22.33.44 --dport 873 -j DROP

如此, 只有 11.22.33.44 这个 client IP 能进入这台 rsync server。


命令介绍:-rvlHpogDtS
rsync命令参数
-v表示verbose详细显示
-z表示压缩
-r表示recursive递归
-t表示保持原文件创建时间
-o表示保持原文件属主
-p表示保持原文件的参数
-g表示保持原文件的所属组
-a存档模式
-P表示代替-partial和-progress两者的选项功能
-e ssh建立起加密的连接。
--partial阻止rsync在传输中断时删除已拷贝的部分(如果在拷贝文件的过程中,传输被中断,rsync的默认操作是撤消前操作,即从目标机上
删除已拷贝的部分文件。)
--progress是指显示出详细的进度情况
--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。
--exclude不包含/ins目录
--size-only 这个参数用在两个文件夹中的差别仅是源文件夹中有一些新文件,不存在重名且被修改过的文件,因为这种文件有可能会因为内容被修改可大小一样,而被略过。这个参数可以大大地提高同步的效率,因为它不需要检查同名文件的内容是否相同。
--password-file来指定密码文件,内容包含server端指定认证用户的密码。
这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。
hening@192.168.0.217::backup
hening是指server端指定认证的用户
192.168.0.217是指服务器端的ip
::backup 表示服务器端需要同步的模块名称;
/home/quack/backup/$DATE是同步后的文件指存放在本机的目录地址。
/var/log/rsync.$DATE是同步后的日志文件存放在本机的目录地址。
注意

不放/  则目录名也包含mirror,放 / 则只有目录里面的东西mirror了

详见:http://blog.csdn.net/moqiang02/article/details/37938059


实例总结流程:

1.配置主控端
# vim /etc/rsyncd.conf
###################################
uid = nobody
gid = nobody
use chroot = no
max connections = 4
stirict modes = yes
port = 873
[backup]
path = /usr/local/test/
comment = This is a test
ignore errors
read only = false
list = no
hosts allow = 192.168.0.11
hosts deny = 0.0.0.0/0
auth users = bakweb
secrets file =/etc/rsyncd.pw
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
###################################
# vim /etc/rsyncd.pw
###################################
bakweb:123456
###################################
# cd /etc
# chown root.root rsyncd.pw
# chmod 600 rsyncd.pw
启动rsync server
# rsync --daemon
查看端口873是否打开
加入启动
# echo "rsync --daemon" >>/etc/rc.local
给/usr/local/test目录写权限
# chown -R nobody.nobody /usr/local/test
# chmod -R 770 /usr/local/test

主控配置完成。

2.客户端配置

# vim /etc/rsyncd.pw
####################################
123456
####################################
# chown root.root /etc/rsyncd.pw
# chmod 600 /etc/rsyncd.pw
再使用命令直接更新到服务器数据文件就不需要密码
rsync -vzrtopg --progress --password-file=/etc/rsyncd.pw  /usr/local/bin/ bakweb@192.168.0.10::backup

注意:

1.这里的backup名字为主控conf配置里面的[backup],一定要同名

2.bakweb为主控conf配置里面的bakweb,可以随意命名,不是系统用户。


配置完了之后,可能会遇到一些权限问题。以下就一些常见的权限问题进行解答:
问题一:
@ERROR: chroot failed
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:
服务器端的目录不存在或无权限。
创建目录并修正权限可解决问题。

问题二:
@ERROR: auth failed on module tee
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:
服务器端该模块(tee)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败。
提供正确的用户名密码解决此问题。

问题三:
@ERROR: Unknown module ‘tee_nonexists’
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:
服务器不存在指定模块。
提供正确的模块名或在服务器端修改成你要的模块以解决问题。

测试
都配置完毕之后就是测试了。在FreeBSD机器上,输入命令
rsync -vzrtop --delete /home/andrewy/etc test@192.168.21.41::backup --password-file=/etc/rsyncd.password
查看同步效果。


注意:我这里是直接以root进行操作。rsync以delete操作时要注意,它会完全同步这边的目录与服务器的目录中的文件,这样会产生一个后果,它会删掉服务器中多余的文件,这样做很危险,如果是线上机器,请慎之又慎,切记!

转载于:https://www.cnblogs.com/moqiang02/p/4061208.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293338.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【 Tomcat 】tomcat8.0 调优配置

2019独角兽企业重金招聘Python工程师标准>>> 1、优化内核及TCP连接: fs.file-max 655350  # 系统文件描述符总量 net.ipv4.ip_local_port_range 1024 65535  # 打开端口范围 net.ipv4.tcp_max_tw_buckets 2000  # 设置tcp连接时TIME_WAIT个数 n…

[转]ORACLE 异常错误处理

本文转自:http://www.cnblogs.com/soundcode/archive/2012/01/10/2318385.html 本篇主要内容如下: 5.1 异常处理概念 5.1.1 预定义的异常处理 5.1.2 非预定义的异常处理 5.1.3 用户自定义的异常处理 5.1.4 用户定义的异常处理 5.2 异常错误传播 5.2.1 在…

java.io.StreamCorruptedException: invalid type code: AC解决办法

.java.io.StreamCorruptedException: invalid type code: AC解决办法问题描述: 在向一个文件写入可序列化对象时,每次只想向文件的末尾添加一个可序列化的对象,于是使用了FileOutputStream(文件名,true)间接…

abb机器人指令手册_第1519课 ABB机器人初级教程

每一位读者都是我分享的动力,感谢大家关注!第15课 系统输入输出与IO信号的关联第16课 示教器可编程按钮的使用第17课 什么是程序数据第18课 程序数据的类型与分类第19课 创建程序数据第15课第16课第17课第18课第19课每一位读者都是我分享的动力&#xff…

Java学习笔记之 IO包 字符流

字符流:Writer/Reader(字符流) 通过子类FileWriter和FileReader实现父类实例化 package iotest; import java.io.File; import java.io.Writer; import java.io.Reader; import java.io.FileWriter; import java.io.FileReader; public class OutputStreamDemo2 { p…

ci框架(二)

自定义SQL语句 当提供的API满足不了我们对SQL语句的要求的时候,我们通常是自己来写SQL语句,CI也提供了比较强大了,能够满足我们需求的一般的sql的API。 $res$…

到底该不该使用存储过程

百度百科对存储过程的定义存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如…

leetcode 104. Maximum Depth of Binary Tree

Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node. 求二叉树的最大深度 /*** Definition for a binary tree node.* public class TreeNode {* int val…

ubuntu上面svn用merge合并到之前的版本

第一步:切换到svn项目的目录 第二步:更新到最新用 svn update 第三步:查看我们当前svn的版本号 svn infoRevision:2234 第四步:查看我们每次记录的日志信息得到版本号 svn log Revision:2231 第五步:合并到之前的版本…

智能卡门禁管理系统_汉中停车场智能门禁系统简介,保安服务收费,行业知识

首页 > 新闻列表 > 正文作者:佚名 点击数: 5更新时间:2020-11-04 08:21:21 导读:名将安防为您提供汉中停车场智能门禁系统简介,保安服务收费的相关知识与详情: 接警时,系统自动调出预警方案&#xf…

Quartus DSE 初步应用

介绍 Design Space Explorer (DSE) is a program that automates the process of finding the optimal collection of Quartus II software settings for a design.心得 : 好的timing是设计出来的。不建议工程一出现timing 就DSE搜索。只有timing只差一点点了才用 &…

推荐系统中协同过滤算法实现分析

原创博客,欢迎转载,转载请注明:http://my.oschina.net/BreathL/blog/62519 最近研究Mahout比较多,特别是里面协同过滤算法;于是把协同过滤算法的这个实现思路与数据流程,总结了一下,以便以后对系…

基于SQL的日志分析工具myselect

基本介绍 程序开发者常常要分析程序日志,包括自己打印的日志及使用的其他软件打印的日志,如php,nginx日志等,linux环境下分析日志有一些内置命令能够使用,如grep,sort,uniq,awk等,当中最强大的是awk,是作为…

老黄的2021

0x01 21年怎么说呢,平淡中带点惊喜。21年在现在的公司待满 2 年了,仔细想想,还真是,这是第一个待满 2 年的公司。这一年,有了很多的挑战,业务上的,技术上的,管理上的都是。下半年开始…

document.elementFromPoint

先说一下这个方法的参数 elemntFromPoint(x,y);//传入坐标值,返回当前页面上包含该坐标点的顶层元素 注意2点,坐标值和顶层元素 先说坐标,因为不同的人理解是不一样的,也就造就了这个方法在不同的浏览器中表现是不一样的&#xff…

Tree的前序序列化

Tree的序列化 比如有一颗树是这样的 1 2 3 如果它这个节点本身不是空则输入自己的值然后加上“!#” 如果是空则打印“#” …

iis6 开启options方法_《王者荣耀》暗夜危机什么时候开启 暗夜危机开启时间

导读 王者荣耀神秘关卡暗夜危机怎么进?许多玩家对于这个暗夜危机的关卡还不太熟悉,不知道如何开启,下面就让九游小编为大家带来,王者荣耀暗夜危机开启方法介绍。 王者荣耀神秘关卡暗夜危机怎么进? 峡谷异闻... 王者荣耀…

全球顶级大学,在中国录取率却不足0.5%,答案一针见血!

▲点击查看一提起新加坡教育,恐怕大家的第一反应都是:特别牛!到底有多牛呢?我们拿数据说话——在全球公认的学生能力测试中,新加坡数学屡屡夺魁!在“国际数学和科学评测趋势报告 2019”(TIMSS&a…