rsync使用

简介:

rsync命令的工作模式:

       第一种:shell模式,也称作本地模式

       第二种:远程shell模式,此时可以利用ssh协议承载其数据传输过程

       第三种:列表模式,其工作方式与ls相似,仅列出源的内容: -nv

       第四种:服务器模式,此时,rsync可以工作为守护进程,能够接受客服端的数据传输请求:在使用时,可以使用rsync命令把文件发送给守护进程,也可以向服务器端请求获取文件


rsync有许多选项:

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

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

       -q: --quite,静默模式

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

       -r: --recursive,递归复制:

       -a: --archives,归档,保留文件的原有属性

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

       -t: --time,保留文件的时间戳

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

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

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

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

       -e SSH: 表示使用ssh协议作承载

       -z: 对文件压缩后传输


       --progress: 显示进度条

       --stats:显示统计结果

       

递归复制示例:

       rsync -r /etc abc#把/etc下的所有文件递归复制到abc目录里

       rsync -r /mydata/data /backups/ : #会把目录data直接同步至/backups目录中

       rsync -r /mydata/data/  /backups/ : 会把目录data/中的内容同步至/backups目录中

       rsync -e ssh -r redis-4.0.2 root@192.168.1.51:/tmp#把本地的redis-4.0.2目录推送到远程主机192.168.1.51下的目录/tmp下

       

配置rsync以daemon的方式运行:


1、设定rsync服务器端:


    1)安装并启动xinetd

     # yum -y install xinetd


    2) 为rsync服务提供配置文件

     配置文件为/etc/rsyncd.conf


         定义一个全局配置和多个rsync共享配置


      #Global Settings

        uid = nobody

        gid = nobody

        use chroot = no

        max connections = 10

        strict modes = yes

        pid file = /var/run/rsyncd.pid

        log file = /var/log/rsyncd.log

       #Directory to be synced

        [synced_name]

        path = /path/to/some_dir

        ignore erros = yes

        read only = no

        write only = no

        hosts allow = white_list_ip/net

        hosts deny = black_list_ip/net

             说明:

                 1、二者都不出现时,默认允许访问:

                 2、只出现hosts allow: 定义白名单,但没有被匹配的主机由默认规则处理,即为允许:

                 3、只出现hosts deny: 定义黑面单,出现在名单中的都被拒绝

                 4、二者同时出现,先检查hosts allow,如果匹配就allow,否则,检查hosts

                 deny,如果匹配则拒绝:如二者均无匹配,则由默认规则处理,即为允许:

                 

        list = false

        uid = root

        gid = root

        auth users = username

        secrets file = /etc/rsync.passwd


       3)配置密码文件/etc/rsyncd.passwd

         文件格式(明文):

         username:password


         文件权限要设置为600;


       4)配置服务能够启动

        # chkconfig rsync on

        # service xinetd start


        监听于873/tcp

    

2、在服务器上做测试


如果需要做周期性操作,则需要将命令写入crontab中:



实际演示:


服务器端:192.168.1.49

客户端:192.168.1.51


CentOS自带rsync


服务器端:


1、建立数据目录

         

[root@localhost ~]# mkdir -pv /mydata/data

mkdir: 已创建目录 "/mydata"

mkdir: 已创建目录 "/mydata/data"


2、创建配置文件


[root@localhost ~]# vim /etc/rsyncd.conf


uid = nobody #设置运行rsync进程的用户

gid = nobody

use chroot = no

max connections = 10

strict modes = yes

pid file = /var/run/rsyncd.pid #CentOS7中yum安装不需要指定pid file 否则报错

log file = /var/log/rsyncd.log #日志文件

[mydata]

path = /mydata/data #实际需要同步的路径

ignore errors = yes

read only = no #可以pull

write only = no #可以push

hosts allow = 192.168.1.0/24 #允许访问的主机或网段

hosts deny = *

list = false

uid = root

gid = root

auth users = myuser #客户端获取文件的身份此用户并不是本机确实存在的用户

secrets file = /etc/rsync.passwd #用来认证客户端的密钥文件

3、创建密码文件

[root@localhost ~]# vim /etc/rsync.passwd

myuser:mypass

4、修改密码文件权限

[root@localhost ~]# chmod 600 /etc/rsync.passwd

5、把rsync服务设置为开机启动并启动服务

[root@localhost ~]# systemctl enable rsyncd.service

ln -s '/usr/lib/systemd/system/rsyncd.service' '/etc/systemd/system/multi-user.target.wants/rsyncd.service'

[root@localhost ~]# systemctl start rsyncd.service

6、查看rsync监听的端口

[root@localhost ~]# ss -tnlp|grep 873

LISTEN     0      5                         *:873                      *:*      users:(("rsync",28684,4))

LISTEN     0      5                        :::873                     :::*      users:(("rsync",28684,5))


测试把客户端的jenkis文件push到服务器的mydata目录下


客户端:


[root@localhost src]# rsync jenkins-cli.jar myuser@192.168.1.49::mydata 

Password: 


服务器端:


可以正常的看到该文件


[root@localhost mydata]# cd data/

[root@localhost data]# ls

jenkins-cli.jar


测试把服务器端/mydata/data/目录下的jenkis文件再pull到本地的/root目录下


[root@localhost src]# rsync myuser@192.168.1.49::mydata/* /root

Password: 

[root@localhost src]# cd /root/

[root@localhost ~]# ls

anaconda-ks.cfg  install.log  install.log.syslog  jenkins-cli.jar

本文转自服务器运维博客51CTO博客,原文链接http://blog.51cto.com/shamereedwine/1977191如需转载请自行联系原作者

neijiade10000
相关文章
|
算法 安全 Shell
rsync使用详解
1、什么是Rsync  Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远 程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
1245 0
|
Shell 网络安全
|
数据安全/隐私保护 网络协议 算法
|
算法 数据安全/隐私保护