博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rsync远程拷贝服务搭建
阅读量:6875 次
发布时间:2019-06-26

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

一、rsync简介:

  rsync是一款远程数据同步的工具,是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具,Rsync 软件适用于 Linux Windows等多种操作系统,并且他可以不改变数据的任何属性和内容。

  rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似ssh的scp命令,但又优于scp命令的功能,scp每次都是全量备份,而rsync支持增量备份,当然。rsync还可以在本地主机的不同分区和目录之间全量及增量的复制数据,这又类似于cp命令,但又优于cp命令,cp每次都是全量备份,rsync可以支持增量备份

二、rsync参数:

-v	详细模式输出,传输时的进度等信息,-z	传输时进行压缩以提高传输效率 -compress-level=NUM  ,可以按级压缩,-a	归档模式,表示以递归方式传输文件,并保持所有文件属性,等同于 -rtopgDl,相当于包含以下所有r	对子目录以递归模式,即目录下的所有目录都同样传输,注意事小写r-t	--times 	保持时间属性一致-o	--owner	保持文件属主信息-p	--perms	保持文件权限g	--group	保持文件属组信息-P	显示同步的过程以及传输时的进度等信息-D	保持设备文件信息,-I	保留软连接,还有一些其他参数:-e			     使用隧道模式,--delete			让目标目录SRC和源目录数据DST一致,--exclude=PATTERN		指定排除不需要传输的文件模式--bwlimit=RATE  		限速(案例:某DBA做数据同步rsync,导致用户无法访问网站)1、使用rsync的参数,做限速2、备份尽量在晚上做备份,补充:rsync scp ftp都有限速的功能,

三、rsync的三种工作模式:

  1、rsync本地工作模式

  rsync的本地模式相当于cp命令,可以实现本地的文件复制,可以加参数来保持文件的属性一致。

;单台服务器使用rsync实现备份操作:[root@localhost /]# yum install rsync -y[root@localhost opt]# cp /etc/hosts /opt/[root@localhost opt]# ll /opt/total 4-rw-r--r--. 1 root root 158 Jul 30 08:54 hosts[root@localhost opt]# rm -f /opt/hosts [root@localhost opt]# rsync /etc/hosts /opt[root@localhost opt]# ll /opt/hosts -rw-r--r--. 1 root root 158 Jul 30 08:55 /opt/hosts

  2、rsync使用远程ssh通道工作模式:

  使用-e参数可以是实现rsync通过远程ssh通道实现跨主机的备份操作,需要注意的是,两台主机都需要已经安装rsync。使用ssh连接会有一个问题就是传输很慢,可以采用一下方式优化:

  修改/etc/ssh/sshd_config以下几行:  

  GSSAPIAuthentication no

  #GSSAPIAuthentication yes
  UseDNS no

  然后使用rsync远程ssh通道实现跨主机文件备份:

[root@localhost backup]# rsync -avz /backup/pandj.txt -e "ssh -p 22" root@192.168.80.129:/optroot@192.168.80.129's password: sending incremental file listpandj.txtsent 97 bytes  received 35 bytes  37.71 bytes/sectotal size is 5  speedup is 0.04[root@localhost backup]# ssh 192.168.80.129root@192.168.80.129's password: Last login: Mon Jul 30 09:09:52 2018 from 192.168.80.1[root@localhost ~]# ip add | grep 192.168    inet 192.168.80.129/24 brd 192.168.80.255 scope global dynamic ens33[root@localhost ~]# cd /opt/[root@localhost opt]# lltotal 4-rw-r--r--. 1 root root 5 Jul 30 09:46 pandj.txt

  3、rsync daemon 服务模式:

  相当于搭建一个备份服务器,上面跑一个rsync服务,(服务称之为daemon)监听 873 端口,然后有其他的客户端服务器, 在客户端服务器上使用rsync命令,实现可以和服务器 推 和 拉 的作用, 推拉都是在客户端的操作,

  服务端编辑rsync配置文件:

#用户uid,相当于进程对应的虚拟用户远端的命令要使用rsync来访问目录 uid = rsync #gid 相当于进程对应的用户组 gid = rsync #安全相关 use chroot = no  #最大连接数量 max connections = 200 #进程对应的进程号文件 pid file = /var/run/rsyncd.pid #日志文件 log file = /var/log/rsyncd.log #超时时间 timeout = 900 [backup]  #服务端提供访问的目录 path = /backup #忽略错误 ignore errors #只读为假表示 可写 read only = no #允许列表 list  = yes #虚拟用户 auth users = rsync_backup #虚拟账号对应的用户和密码 secrets file = /etc/rsync.password

  服务端rsync配置文件配置好之后,还需要创建一个rsync用户和 /backup 这个目录,访问逻辑就是源端用户连过来的时候用的就是rsync这个用户访问 /backup 这个目录,在这个过程中,需要注意文件的权限,以及配置文件中虚拟用户的账户密码文件配置。

[root@localhost ~]# useradd rsync -s /sbin/nologin -M               //创建一个rsync用户 不需要登陆,不需要家目录。[root@localhost ~]# tail -1 /etc/passwdrsync:x:1001:1001::/home/rsync:/sbin/nologin[root@localhost ~]# mkdir /backup			 //创建一个backup目录[root@localhost ~]# ll -d /backup/drwxr-xr-x. 2 root root 23 Jul 30 09:46 /backup///到这边远端用户还是访问不了/backup这个目录,因为有权限的控制,需要我们把这个目录的属主改成rsync,也可以用chmod 777但是这样不安全,不建议使用[root@localhost ~]# chown -R  rsync.rsync /backup[root@localhost ~]# ll -d /backup/drwxr-xr-x. 2 rsync rsync 23 Jul 30 09:46 /backup///然后检查配置文件,还少一个虚拟账号对应的密码文件 secrets file = /etc/rsync.password 编辑此文件并修改此文件的权限,[root@localhost ~]# echo "rsync_backup:123456" > /etc/rsync.password[root@localhost ~]# tail -1 /etc/rsync.password rsync_backup:123456[root@localhost ~]# chmod 600 /etc/rsync.password [root@localhost ~]# ll /etc/rsync.password -rw-------. 1 root root 20 Jul 31 09:25 /etc/rsync.password//启动rsync服务,并加入开机自启,查看端口确认服务是否起来。[root@localhost ~]# /usr/bin/rsync --daemon[root@localhost ~]# echo "/usr/bin/rsync --daemon" >> /etc/rc.local [root@localhost ~]# lsof -i:873COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAMErsync   2245 root    4u  IPv4  20736      0t0  TCP *:rsync (LISTEN)rsync   2245 root    5u  IPv6  20737      0t0  TCP *:rsync (LISTEN)

  

  服务端至此配置完成,配置客户端的步骤如下:

  1、需要配置一个密码文件,和服务端一致并修改权限

[root@client ~]# echo "rsync_backup:123456" > /etc/rsync.password[root@client ~]# chmod 600 /etc/rsync.password [root@client home]# tail -1 /etc/rsync.password rsync_backup:123456

  2、创建一个 /backup 目录,用来测试

[root@client backup]# mkdir /backup/

  3、测试推送

//在服务端 /backup 目录下创建一个测试文件[root@localhost backup]# touch test[root@localhost backup]# echo 11111 > test//在客户端拉取服务区的文件[root@client backup]# pwd/backup[root@client backup]# lltotal 0[root@client backup]# rsync -avz rsync_backup@192.168.80.128::backup /backup/receiving incremental file list./testsent 50 bytes  received 127 bytes  354.00 bytes/sectotal size is 6  speedup is 0.03[root@client backup]# lltotal 4-rw-r--r--. 1 root root 6 Jul 31 11:12 test[root@client backup]# more test 11111

  如果想要非交互式的传输,可以用以下命令:

[root@localhost backup]# rsync -avz /backup/ rsync_backup@192.168.80.130::backup/ --password-file=/etc/rsync.password 

 

四、配置过程中的注意点:

  1、服务端的目录属主要修改成配置文件中的用户,否则会有权限问题

  2、虚拟用户密码文件服务端内容为:虚拟用户名:密码   客户端密码配置内容为  密码,且两个文件权限均需要修改成600

五、rsync配置中常见的问题:

1、配置文件问题

@ERROR: chroot failed

rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6] 

排查思路;

1、命令解析: 客户端使用 命令 参数 目录 虚拟用户@服务端地址::模块名/ --password-file=/etc/rsync.password 来往服务端同步信息,
2、排查地址及端口,服务端使用lsod -i :873 或者 netstat -lntup | grep 873 来查看服务是否存在
然后在客户端 telnet 服务端地址加端口,排查是否地址端口存在问题,
3、不加 --password-file 参数,手动输入密码,看用户名和密码是否能登陆上
虚拟用户名和密码都定义在 /etc/rsyncd.conf配置文件中
auth users = rsync_backup
secrets file = /etc/rsync.password
/etc/rsync.password 文件需要创建,服务端中输入rsync_backup:123456,用户名密码
/etc/rsync.password 客户端中输入 joywise
4、能连接上,排查 uid gid 中rsync是否存在,[backup]模块中目录地址是否正确,
5、查看 [root@backup backup]# tail -10 /var/log/rsyncd.log
提示我 /backup 这个目录找不到,ll -d /backup查看目录确实存在,怀疑问题在配置文件中的[backup] 模块中 path 中,经过排查, path = /backup 这条配置后面有很多空格导致找不到目录,所有提示 chroot failed,修改配置文件,然后再从客户端推,解决问题。

  

 

 

 

 

  

  

  

转载于:https://www.cnblogs.com/pandj/p/9391966.html

你可能感兴趣的文章
客户端不能连接mysql的问题
查看>>
向PLIST文件中追加数据
查看>>
exchange2007配置发送、接收附件大小
查看>>
iOS 索引列 使用详解
查看>>
我的友情链接
查看>>
centos 安装
查看>>
我的友情链接
查看>>
2014 工作计划
查看>>
装饰器
查看>>
http_proxy_module模块常用参数
查看>>
jsp中c标签的使用
查看>>
LINUX安装详解
查看>>
struts2+json(4)
查看>>
mongodb数据库特点(包括评论、点赞的数据库字段设计)
查看>>
渺小的自己
查看>>
我的友情链接
查看>>
用PHP读取和编写XML DOM5
查看>>
win10安装net 3.5
查看>>
webmagic爬虫程序
查看>>
实战:将静态路由发布到动态路由
查看>>