rsync使用(二)

一、rsync简介

rsync是Linux/UNIX系统下的文件同步和数据传输工具,它采用“rsync算法”使一个客户机和远程文件服务器之间的文件同步。通过rsync可以将同一个服务器的数据从一个分区备份到另一个分区,也可以将本地系统的数据通过网络传输方式备份到任何一个远程主机上;rsync工作特性第一可以在中断之后恢复传输,第二只传输源文件和目标文件之间不一致的部分,第三可以执行完整备份或者增量备份。

rsync基本特点:

  • 可以镜像保存整个目录树和文件系统;
  • 可以很容易做到保持原来文件的权限、时间、软硬链接等;
  • 无须特殊权限即可安装;
  • 优化的流程,文件传输效率高;
  • 可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接;
  • 支持匿名传输。

二、rsync命令的常用选项

-n:测试,在不确定命令是否能按照意愿执行时,务必要实现测试

-v:详细输出模式,--verbose

-q:--quiet,静默模式

-c:--checksum,开启校验功能,强行对文件传输进行校验

-r:--recursive,递归复制

-a: --archives.归档,保留文件的原有属性,等同于-rlptgoD

-p:--perms 保留文件的权限

-t: --times 保留文件的时间戳

-l:--links 保留文件的符号链接

-g:--group保留文件的属组

-o:--owner 保留文件的属主

-D:--devices 保留设备文件

-e ssh:表示使用ssh协议作为继承

-z:对文件压缩后传输

--progress:显示进度条

在使用时要注意:如果源目录的末尾有斜线,则只会复制源目录下的文件,而不复制源目录本身。若源目录没有斜线则会复制整个目录包含内的文件到指定的地方。

三、rsync的应用模式及相关举例

1、rsync的应用模式

  • shelll应用模式,也称为本地模式;
  • 远程shell模式,它利用SSH执行底层连接和加密传输;
  • 查询模式,与ls命令实现类是的功能,仅列出源的内容;
  • 服务器模式,此时,rsync可以工作在守护进程,能够接收客户端的数据请求;在使用时,可以在客户端使用rsync命令把文件发送到守护进程,也可以像服务器请求获取文件。

2、本地shell模式应用举例

下面两个实验可以很好的说明在同步时源目录后带与不带/,这两个细小的微调所带来的结果的很大不同。

[[email protected] ~]# rsync -av shell /tmp/
sending incremental file list
shell/
shell/cpcmd.sh
shell/cpcom.sh
shell/jingxiang.sh

sent 4470 bytes  received 73 bytes  9086.00 bytes/sec
total size is 4232  speedup is 0.93
[[email protected] ~]# rsync -av shell/ /tmp/
sending incremental file list
./
cpcmd.sh
cpcom.sh
jingxiang.sh

sent 4455 bytes  received 72 bytes  9054.00 bytes/sec
total size is 4232  speedup is 0.93
[[email protected] ~]# ls /tmp/
cpcmd.sh  cpcom.sh  jingxiang.sh  shell

3、远程shell模式

默认情况下rsync是使用ssh做为传输机制,由于线上的机器都会把ssh默认的连接端口22给改掉,所以下面是ssh端口改掉后的应用举例:

[[email protected] ~]# rsync -av shell -e ‘ssh -p 5231‘ 192.168.1.20:/tmp
Enter passphrase for key ‘/root/.ssh/id_rsa‘: 
sending incremental file list
shell/
shell/cpcmd.sh
shell/cpcom.sh
shell/jingxiang.sh

sent 4470 bytes  received 73 bytes  534.47 bytes/sec
total size is 4232  speedup is 0.93

4、查询模式

在这个模式下,rsync与ls相类似,例如以root身份查看远程主机192.168.1.20的/tmp下的内容:

[[email protected] ~]# rsync -a 192.168.1.20:/tmp
Enter passphrase for key ‘/root/.ssh/id_rsa‘: 
drwxrwxrwt        4096 2015/08/03 21:01:35 tmp
drwxrwxrwt        4096 2015/08/03 20:12:10 tmp/.ICE-unix
drwxr-xr-x        4096 2015/07/31 21:22:59 tmp/shell
-rw-r--r--         500 2015/07/28 21:44:11 tmp/shell/cpcmd.sh
-rwxr-xr-x         483 2015/07/25 02:33:21 tmp/shell/cpcom.sh
-rwxr-xr-x        3249 2015/07/29 01:16:26 tmp/shell/jingxiang.sh

5、服务器模式

这种模式是基于C/S模式的,在这种模式下,rsync在后台启用了一个守护进程,这个守护进程在rsync服务器端永久运行,用于接受文件传输请求,因此,客户端既可以把文件发送给守护进程,也可以向守护进程请求文件。rsync的服务器模式非常适合做为异地的中心备份服务器或数据异地存储库来使用。关于其具体的使用方法下面在应用举例。

四、rsync以基于C/S模式进行远程备份

1、实验环境介绍

hostname IP 系统
服务端 webserver 192.168.1.20 CentOS  6.6
客户端 hpf-linux 192.168.1.8 CentOS  6.6

2、服务端操作

安装守护进程软件:

[[email protected] ~]#  yum install -y xinetd

为rsync提供配置文件:

[[email protected] ~]# vim /etc/rsyncd.conf     //系统默认没有此文件需要手动创建
uid = nobody             (指定当前该模块传输文件时守护进程应该具有的用户ID,默认是nobody)
gid = nobody             (指定当前该模块传输文件时守护进程应该具有的用户组ID,默认是nobody)
use chroot = no          (是否禁锢用户家目录)
max connections = 10     (指定模块的最大并发连接数)
strict modes = yes       (是否完全检查口令文件的权限,yes为检查权限,no为不检查,所设置为yes,密码文件的权限必须为root用户权限)
pid file = /var/run/rsyncd.pid  (指定rsync守护进程对应的PID文件路径)
log file = /var/log/rsyncd.log  (指定rsync守护进程对应的传输日志文件)
[test]                   (定义模块名称)
path = /data             (指定需要备份文件或目录)
ignore errors = yes      (是否忽略一些无关的I/O错误)
read only = no           (设置no表示客户端可以上传文件,设置yes表示只读)
write only = no          (设置no表示客户端可下载文件,设置yes表示不能下载)
hosts allow =192.168.1.8 (白名单)
hosts deny = *           (黑名单 )
说明:
由于没有被白名单匹配到的会由默认规则处理,即为允许,所以为了安全这里只定义仅允许一台机器可以同步,剩下的拒绝任何人同步。
list = false            (设定当客户端请求可以使用的模块列表时,该模块是否被列出。设置文false则是隐藏模块,反之为true)
uid = root
gid = root
auth users = userdata   (定义可以连接该模块的用户名,多个用户以空格或逗号分隔开。这里的用户与linux系统的用户没有任何关系)
secrets file = /etc/rsync.passwd  (用户密码的存放位置需要手动创建)

创建密码文件并更改权限:

[[email protected] ~]# cat /etc/rsyncd.passwd
userdata:redhat
[[email protected] ~]# chmod 600 /etc/rsyncd.passwd

启动守护进程rsync:

[[email protected] ~]# chkconfig rsync on
[[email protected] ~]# /etc/init.d/xinetd start
正在启动 xinetd:                                          [确定]
[[email protected] ~]# ss -tunl |grep 873   //rsync默认监听在873端口
tcp    LISTEN     0      64                    :::873                  :::*

3、客户端测试rsync服务

将客户端文件推到服务端:

[[email protected] ~]# ls shell/
cpcmd.sh  cpcom.sh  jingxiang.sh
[[email protected] ~]# rsync shell/* [email protected]::testPassword: 
[[email protected] ~]# ls /data/
cpcmd.sh  cpcom.sh  jingxiang.sh

注意:这里的test是服务端所定义的模块,同时在模块内定义了文件存放的目录/data,密码是在服务端定义/etc/rsync.passwd文件密码。在基于C/S模式进行同步时,一定要将同步的文件写好路径,若不知道文件名称可以用*代替但不能不写。

不用手动输入密码将服务端的数据拉带客户端的/tmp目录下:

[[email protected] ~]# cat /etc/rsync.passed
redhat
[[email protected] ~]# chmod 600 /etc/rsync.passed
[[email protected] ~]# rsync --password-file=/etc/rsync.passed [email protected]::test/* /tmp
[[email protected] ~]# ls /tmp/
cpcmd.sh  cpcom.sh  jingxiang.sh

通过选项 --password-file=/etc/rsync.passed 的使用就不用在手动输入密码了,这样做的好处是在使用周期任务crontab是不用手动输入密码了。

这篇文章主要讲了rsync在C/S模式下的使用及配置,关于rsync的常用选项的介绍我在原先学习中总结过,虽然不是很全但够用就好,若还想扩展还是直接man rsync,查看使用帮助手册。然而由于在同步文件时只能借助与crontab进行周期性任务计划,若需要使用实时同步还要借助于inotify+rsync的组合,具体使用下篇在做介绍。

时间: 2024-10-01 06:54:58

rsync使用(二)的相关文章

sersync+rsync实时同步配置案例

目前业内比较靠谱的同步解决方案有: rsync+inotify-tools,Openduckbill+inotify-tools和rsync+sersync 前两者由于是基于脚本语言编写,所以规范程度,执行效率相对rsync+sersync就稍微弱一些. sersync是使用c++编写,基于boost1.43.0,inotify api,rsync command开发,主要用于服务器同步,web镜像等功能.其对linux系统文件系统产生的临时文件和重复的文件操作能够进行过滤,所以在结合rsync

企业实时同步方案----Rsync+Sersync

在博文企业实时同步方案----Sersync介绍中我们详细介绍了Sersync的原理,设计架构以及和 Inotify 等等的优势区别.这里我就带大家一起来做一下 Rsync +Sersync 这个同步分发架构案例. 实验环境介绍: 内核版本:2.6.32-431.el6.x86_64 系统采用最小化安装,系统经过了基本优化,selinux为关闭状态,iptables为无限制模式 源码包存放位置:/root Rsync客户端+Sersync服务器(SERSYNC),承担角色MASTER,IP:17

centos6 rsync+inotify 数据同步

一 前戏#检测rsync是否已安装rpm -qa rsync#如未按装,执行yum安装yum install -y rsync#新建用户和目录并授权useradd -M -s /sbin/nologin  rsyncmkdir /bakcupchown -R rsync.rsync /bakcup/ 二 服务端配置#打开配置文件,填入以下内容vi /etc/rsyncd.conf===================================#rsyncd.conf____________

sersync+rsync原理及部署

一.为什么要用rsync+sersync架构? 1.sersync是基于inotify开发的,类似于inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或者某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的文件或者目录 二.rsync+inotify-tools与rsync+sersync架构的区别? 1.rsync+inotify-tools a.inotify只能记录下被监听的目录发生了变化(增,删,改)并没

多学一点(十四)——服务器间通过rsync和inotify-tools动态同步数据

Linux 下的 rsync 命令非常强大,多用来同步不同服务器上的数据同步.以前我们通常使用 crond 来实现,但 crond 很难做到实时同步.下面介绍一种方法,通过在脚本中结合使用 inotify 及 rsync实现数据实时同步. 1.安装 rsync: [[email protected] ~]# yum install -y openssh-clients rsync 这里要注意两点,一是进行同步的两台服务器上均需安装 rsync ,二是 rsync 需要依赖 openssh-cli

rsync+inotify实现数据实时同步备份

在实际生产环境当中,我们总会遇见需要把一些重要数据进行备份,且随着应用系统规模的增大,对数据的安全性.可靠性.时效性要求还是比较高的, 因此我自己有在用rsync+inotify来实现数据实时同步备份,下面记录下操作步骤,以防日后自己忘记. 实验背景: 操作系统          IP         机器名        角色 CentOS 7.2       172.16.22.1     nginx01        数据源(服务器端) CentOS 7.2       172.16.22

Linux运维 第三阶段 (十四)rsync

一.相关概念: rsync(remote synchronize,rsync.samba.org):远程数据同步工具,通过网络快速同步多台主机间的文件,也可使用rsync同步本地硬盘中不同目录中的数据,利用其自身算法(rsync算法)只传送两个文件的不同部分,通过ssh方式来传输文件,因此保密性好:与cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份的优点,通过rsync可以解决对实时性要求不高的数据备份需求,如定期备份服务器数据到指定的服务器.对本地磁盘定期做数据镜像.集

rsync实现Linux服务器数据同步到windows机器上

rsync实现Linux服务器上的数据同步到windows上 一.windows上安装配置cwrsyncserver软件 1.下载rsyncserver软件包,傻瓜式安装,当出现account和密码界面时,可以设置自己的用户名和密码. 2.配置rsyncd.conf文件 pid file = rsyncd.pid port = 2878 use chroot = false strict modes = false hosts allow = * log file = rsyncd.log ui

企业实时同步方案----Rsync+Inotify-Tools

在博文RHCE系列之备份工具----镜像备份Rsync中,我带大家了解 rsync 的诸多特性以及它所支持的四种模式.作为一个镜像备份工具,可以说 rsync 做的很出色. 可是,随着应用系统规模的不断扩大,我们对数据的安全性和可靠性方面的需求也越来越高!Rsync 在高端业务系统中的不足也逐渐暴露了出来. 首先,rsync 在同步数据时,需要扫描所有文件后才进行比对,然后再进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的一个操作,并且往往发生变化的是其中很小的一部分

rsync+crontab备份方案

一.准备工作 1.1.安装Rsync 检查系统是否安装rsync 客户端NFS: [[email protected] ~]# rpm -qa rsync rsync-3.0.6-12.el6.x86_64 服务端rsync: [[email protected] ~]# rpm -qa rsync rsync-3.0.6-12.el6.x86_64 如果没有安装rsync服务 [[email protected] ~]# yum install rsync -y 1.2.配置rsync服务端: