Rsync

RSYNC数据同步工具
简介
可实现全量和增量的本地或远程数据同步备份的工具,还可以实现删除文件和目录的功能
查找软件包命令
在这里插入图片描述
特性
支持拷贝特殊文件,如链接文件,设备等
可以有排除,指定文件或目录同步的功能,相当于打包命令tar的排除功能
可以做到保持源文件或者目录的权限,时间,软硬连接,属主,属组等属性都不改变(-p参数)
可以实现增量同步,就是只同步发生变化的数据,因此数据传输效率很高(tar -N)
可以使用rcp、rsh、ssh等方式来配合传输文件(rsync本身不对数据加密)
可以通过socket(进程方式)传输文件和数据(服务端和客户端)
支持匿名的或认证(无需系统用户)的进程模式传输,进行数据备份及镜像
常用场景
两台服务器之间数据同步(定时任务+数据备份)也就是crond和rsync
Rsync的工作方式
本地间类似cp命令的复制方式
网络间两台不同IP服务器间数据传输
以socket进程监听的方式启动rsync server端
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参数
-a:——archive归档模式,表示以递归方式传输文件,并保持所有文件属性不变,
-v:——verbose详细模式,输出传输时的进度等详细信息
-z:——compress传输时进行压缩以提高传输效率,–compress-level可按级别进行压缩
-e:指定推送方式以及端口号,-e ‘ssh -p 22’是以ssh方式通过22端口进行推送,这也是默认的方式和端口号,也可不加这部分参数,如果需要改动,则需通过-e参数进行指定
–delete:让目标目录和源目录保持一致
格式为:rsync -avz 源目录 目标目录 –delete
–exlude:排除参数
格式为:–exlude=文件名
rsync同步时进行网络限速
在做数据同步的时候,都是要对数据同步进行限速的,不然所有的本地带宽都会被数据同步占用,宽带如果不足,就会影响公司其他的业务运行
–bwlimit限速参数
–bwlimit=100 限定带宽为100
增量同步
方法和上面的同步步骤一样,只是多了一个增量同步原理
增量同步原理:在多文件或者目录的同步过程中,如果源目录里有目标目录没有的内容,则只会把目标目录没有的部分,进行同步,已经有的不再进行同步过程。以源目录为基准
完全同步
要用到–delete参数,一旦执行,两个目录就会保持一致,没有的内容同步过去,多余的内容删掉
修改rsync监听端口
默认为873端口,如需修改,端口号必须为一千以上的数字,一千以下都被占用了,安全起见,一般都修改为1万以上,避免被扫出来,修改后,还需关闭防火墙,否则防火墙的默认规则还是挡住,防火墙默认开放的也是22端口
rsync增量同步的缺点
因为在进行同步时要进行比对,所以如果有很多小文件需要推送,可以先把文件打包,可以大大提高rsync的效率,这样就只会进行一个大文件的比对。
Rsync的本地间复制功能

单文件增量同步

多文件(目录)同步,需要加参数
如果111目录后加/则是把111目录下的文件都一个一个同步过去,过去的是一个一个文件
如果111目录后不加/则是把111整个目录都同步过去,过去的是一整个目录连同目录里的所有内容
不同主机之间进行数据传输
需要借助ssh通道,可用
which scp 查看,如果没有则用yum装openssh-clients
rsync -avz -e ‘ssh -p 22’ /root/sss root@192.168.200.233:/tmp/
命令说明:-e 'ssh -p 22’表示-e参数指定以ssh的方式通过22端口推送,如果不加这部分默认为22端口
/root/sss为源文件
root@是以root账号进行登录,可指定登录用户,如果不写也是默认以root身份进行登录
对方的IP地址
:/tmp为同步后文件的位置
首次连接会有确认步骤
另外每次同步还需输入登录对方用户的密码
scp远程复制命令
和rsync的区别在于,
scp复制是全量的复制,就是把源文件复制过去
rsync是增量的复制,是以源目录作为参照,进行增量复制或者在命令最后加–delete参数进行同步
以socket进程监听的方式启动rsync server端
服务端需要进行的配置步骤

  1. 建立一个配置文件
  2. 创建rsync程序用户
  3. 创建共享目录/backup
  4. chown raync.rsync /backup修改目录属主
  5. 创建密码文件,并写入密码,例如:rsync_backup:123123(程序用户_模块名:密码内容)
  6. chmod 600 密码配置文件
  7. rsync --daemon启动进程,–daemon是以启动守护进程的方式启动
  8. netstat -antup | grep rsync查看端口
    Rsync配置文件
    所有的软件服务都会有一个配置文件,
    程序都会生成pid文件,里面放的就只有它的pid号
    用vim /etc/rsyncd.conf创建配置文件,内容如下:
    在这里插入图片描述

host deny = 0.0.0.0是拒绝所有,后加/32是掩码覆盖所有,代表所有都不拒绝,如果是24的话则是拒绝除了上面允许的除外所有
加入开机自启动
echo “rsync --daemon” >> /etc/rc.local
关闭rsync服务
pkill rsync
启动rsync服务
rsync --daemon
客户端需要进行的配置步骤

  1. 创建密码文件,并写入密码
  2. chmod 600 密码文件
    推送命令
    客户端在向服务端推送的文件时,需要通知服务端两点
    需要通知服务端推送给配置文件的哪个模块,服务端就会根据配置文件里模块的位置,把文件放在模块指定的目录下
    需要服务端对客户端进行用户验证,必须要知道服务端配置文件里模块里写的虚拟账号的账号和密码
    rsync -avz 源目录 rsync_虚拟账号@IP地址::模块名
    执行之后,需要手动输入虚拟账号的密码,这种方式是交互式的推送方式
    如果不想要交互式输入密码,或者需要写在脚本里的话,需要之前配置好的密码文件
    rsync -avz 源目录 rsync_虚拟账号@IP地址::模块名 --passwd-file=/etc/rsync.password
    rsync优点
    增量备份,支持socket进程,集中备份,支持推送和拉取,都是以客户端为参照物
    远程SSHELL通道模式还可以加密(ssh)传输,socket需要加密传输,可以利用vpn服务或ipsec服务
    rsync缺点
    大量小文件进行同步的时候,对比时间长,有时候同步过程中,rsync进程可能会停止,僵死了
    同步大文件时,10G大小的也会出现中断问题,未完成同步前,是隐藏文件,可以通过续传(–partial)等参数实现传输
    一次性远程拷贝可以用scp,大量小文件要打包后再拷贝
    排错思路
    部署流程步骤熟练
    rsync原理理解
    学会看日志,rsync命令行输出,日志文件/var/log/rsyncd.log
    服务端排错思路
    查看rsync服务配置文件路径是否为/etc/rsync.conf
    查看配置文件里host allow,host deny允许的ip网段是否是客户端访问的网段
    查看配置文件中path参数里的路径是否存在,权限是否正确,正常应为配置文件中的UID参数对应的属主和数组
    查看rsync服务是否启动,查看命令为:ps -ef | grep rsync端口是否存在netstat -antup | grep 873
    查看iptables防火墙和selinux是否开启允许rsync服务通过,也可以考虑关闭
    查看服务端rsync配置的密码文件是否是600的权限,密码文件格式是否正确,格式为:用户名:密码,文件路径和配置文件里的secrect files参数对应
    如果是推送数据,要查看,配置rsyncd.conf文件中用户是否对模块下目录有可读写的权限
    rsync客户端排错思路
    查看客户端rsync配置的密码文件是否是600权限,密码文件格式是否正确,仅有密码,和服务端的密码一致
    用telnet连接rsync服务器ip地址873端口,查看服务是否启动
    客户端执行命令
    rsync -avzP rsync_backup@192.168.200.111::backup /backup --password-file=/etc/rsync.password
    IP地址后面是双冒号::模块名
    rsyncd.conf配置文件常用参数
    rsyncd.conf参数 参数说明
    uid=rsync rsync使用的用户。
    gid=rsync rsync使用的用户组(用户所在的组)
    use chroot=no 如果为true,daemon会在客户端传输文件前“chroot to the path”。这是一种安全配置,因为我们大多数都在内网,所以不配也没关系
    max connections=200 设置最大连接数,默认0,意思无限制,负值为关闭这个模块
    timeout=400 默认为0,表示no timeout,建议300-600(5-10分钟)
    pid file rsync daemon启动后将其进程pid写入此文件。如果这个文件存在,rsync不会覆盖该文件,而是会终止
    lock file 指定lock文件用来支持“max connections”参数,使得总连接数不会超过限制
    log file 不设或者设置错误,rsync会使用rsyslog输出相关日志信息
    ignore errors 忽略I/O错误
    read only=false 指定客户端是否可以上传文件,默认对所有模块为true
    list=false 是否允许客户端可以查看可用模块列表,默认为可以
    hosts allow 指定可以联系的客户端主机名或和ip地址或地址段,默认情况没有此参数,即都可以连接
    hosts deny 指定不可以联系的客户端主机名或ip地址或地址段,默认情况没有此参数,即都可以连接
    auth users 指定以空格或逗号分隔的用户可以使用哪些模块,用户不需要在本地系统中存在。默认为所有用户无密码访问
    secrets file 指定用户名和密码存放的文件,格式;用户名;密码,密码不超过8位
    [backup] 这里就是模块名称,需用中括号扩起来,起名称没有特殊要求,但最好是有意义的名称,便于以后维护
    path 这个模块中,daemon使用的文件系统或目录,目录的权限要注意和配置文件中的权限一致,否则会遇到读写的问题
    特别说明:
    1)模块中的参数项可以拿到全局配置中使用
    2)以上配置文件中的参数,为生产中经常使用的参数,初学者掌握这些足够了。
    3)以上配置文件中没有提到的参数请参考man rsyncd.conf查看
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值