博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rsync使用
阅读量:6316 次
发布时间:2019-06-22

本文共 3494 字,大约阅读时间需要 11 分钟。

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
你可能感兴趣的文章
Android学习系列(5)--App布局初探之简单模型
查看>>
git回退到某个历史版本
查看>>
ecshop
查看>>
HTML5基础(二)
查看>>
在Mac 系统下进行文件的显示和隐藏
查看>>
ue4(c++) 按钮中的文字居中的问题
查看>>
技能点
查看>>
读书笔记《乌合之众》
查看>>
Hadoop日记Day1---Hadoop介绍
查看>>
centos7 yum安装jdk
查看>>
zzzzw_在线考试系统①准备篇
查看>>
剑指offer第二版-1.赋值运算符函数
查看>>
Android学习笔记——文件路径(/mnt/sdcard/...)、Uri(content://media/external/...)学习
查看>>
Echart:前端很好的数据图表展现工具+demo
查看>>
Linux VNC黑屏(转)
查看>>
Java反射简介
查看>>
day8--socket网络编程进阶
查看>>
node mysql模块写入中文字符时的乱码问题
查看>>
分析Ajax爬取今日头条街拍美图
查看>>
内存分布简视图
查看>>