rsync备份服务器搭建学习笔记

rsync数据同步、备份
定时:rsync +cron定时任务
实时:rsync +sersync(inotify)

https://www.samba.org/ftp/rsync/rsync.html 官方文档

  • 远程拷贝 ssh带的scp命令(加密的拷贝)
  • 本地拷贝 cp
  • 删除功能 rm

Some of the additional features of rsync are: rsync额外特性

  • support for copying links, devices, owners, groups, and permissions 支持拷贝特殊文件,如链接、设备等
  • exclude and exclude-from options similar to GNU tar 可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能
  • a CVS exclude mode for ignoring the same files that CVS would ignore
  • can use any transparent remote shell, including ssh or rsh 可通过ssh、rsh加密传输(rsync不加密)
  • does not require super-user privileges
  • pipelining of file transfers to minimize latency costs
  • support for anonymous or authenticated rsync daemons (ideal for mirroring) 支持匿名或认证的进程模式传输

rsync可以是一个网络服务(port、socket)
rsync命令是客户端命令

rsync三种工作模式

  • 第一种工作模式:local
rsync -avz /root/aaa /tmp/  --->cp
rsync -avz --delete /root/aaa/ /tmp/    --->rm
  • 第二种工作模式:remote shell ,一般配合ssh、key免密钥传输,结合定时任务
rsync -avzP -e 'ssh -p 22' /opt/ [email protected]:/tmp/     push
rsync -avzP -e "ssh -p 22" [email protected]:/tmp/ /opt/ 带斜线代表获取的是tmp下的文件    pull
rsync -avzP -e "ssh -p 22" [email protected]:/tmp /opt/  不带斜线代表获取的是tmp这个目录   pull
  • 第三种工作模式:rsync daemon 内网不需要,加密性能有损失 vpn(pptp、openvpn,ipsec)
  Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
        rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
  Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
        rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

关键语法说明:
1,-avz相当于-vzrtopgDl,表示同步时文件和目录属性不变。
2,-P显示同步的过程,可以用--progress替换
3,-e 'ssh -p 22',表示通过ssh的通道传输数据,-p 22可省略
4,[email protected]:/tmp/ 远程的主机系统用户、地址、路径
5,/opt本地的路径
6,同步一个文件里有变化的内容部分,先比较再同步

参数选项 描述
-v --verbose 详细模式输出,传输时的进度等信息
-z --compress 传输时进行压缩以提高传输效率,--compress-level=NUM可按级别压缩
-a --archive 归档模式,表示以递归方式传播文件,并保持所有文档属性,相当于-rlptgoD
-r --recursive 对子目录以递归模式,即目录下的所有目录都同样传输
-t --times 保持稳健时间信息
-o --owner 保持文件属主信息
-p --perms 保持文件权限
-g --group 保持文件属组信息
-P --progress 显示同步的过程及传输时的进度等信息
-D --devices 保持设备文件信息
-l --links 保留软链接
--delete 无差异同步(危险)
--exclude 排除单个文件a
排除多个文件{a,b}、{a..d}
排除多个文件--exclude-from
--partial 大文件断点续传
--bwlimit --bwlimit=100限速

企业应用场景:

  1. 两台服务器之间数据同步
  2. 把所有客户端服务器数据同步到备份服务器
  3. rsync结合inotify的功能做实时的数据同步rsync+inotify或sersync

生产场景集群架构服务器备份方案:

cron+rsync 全网服务器数据备份解决方案提出及负责实施

  1. 针对公司重要数据备份混乱状况和领导提出备份全网数据的解决方案
  2. 通过本地打包备份,然后rsync结合inotify应用把全网数据统一备份到一个固定存储服务器,然后存储服务器上通过脚本检查并报警管理员备份结果
  3. 定期将IDC机房的数据备份到公司内部不同的服务器上,防止机房地震及火灾问题导致数据丢失

rsync优点:

1,增量备份,支持socket(daemon),集中备份(支持推拉,都是以客户端为参照物)
2,远程shell通道模式还可以加密(ssh)传输,socket(daemon)需要加密传输,可以利用vpn服务或ipsec服务

rsync缺点:

  1. 大量小文件同步的时候,比对时间较长,有时候,rsync进程可能会终止
  2. 同步大文件,10G这样的大文件有时也会出问题,终端,未完整同步完时,会变成一个隐藏文件,可以通过断点续传等参数实现传输 。一次性远程拷贝可以用scp

Rsync备份实战

配置rsync服务端步骤


1,配置服务器,查看当前rsync安装包和版本号

rsync --version     rsync-3.0.6-12.el6.x86_64


2,vim /etc/rsyncd.conf 添加配置文件

rsync配置文件官网:https://rsync.samba.org/ftp/rsync/rsyncd.conf.html

#配置文件详解,更多参数查看man rsyncd.conf
#Rsync server
#created by hejian 19:50 2019-3-17
##rsyncd.conf start##
uid = rsync     //客户端具备的权限(不存在,需要创建)
gid = rsync
use chroot = no     //安全相关
max connections = 2000   //客户端连接数
timeout = 600       //超时
pid file = /var/run/rsyncd.pid      #进程ID文件
lock file = /var/run/rsync.lock     #锁文件
log file = /var/log/rsyncd.log      #日志文件
ignore errors           #忽略错误
read only = false   #可读写
list = false        #不可以远程列表
hosts allow = 192.168.105.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup   //虚拟用户
secrets file = /etc/rsync.password   //存放用户账号密码的文件
#####################################
[backup]    //模块调用
#comment = backup by hejian 19:50 2019-3-17
path = /backup   //共享目录
[hejian]
path = /hejian


3,创建rsync用户及共享目录/backup,并给目录赋予权限

useradd rsync -s /sbin/nologin -M
id rsync
mkdir /backup
chown -R rsync.rsync /backup/


4,创建密码文件

echo "rsync_backup:123" > /etc/rsync.password
chmod 600 /etc/rsync.password


5,启动rsync服务并查看

rsync --daemon

lsof -i :873  
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME  
rsync   1647 root    3u  IPv4  12479      0t0  TCP *:rsync (LISTEN)  
rsync   1647 root    5u  IPv6  12480      0t0  TCP *:rsync (LISTEN)  

netstat -tunlp|grep rsync  
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                     LISTEN      1647/rsync            
tcp        0      0 :::873                      :::*                          LISTEN      1647/rsync    

ss -tunlp|grep rsync    
tcp    LISTEN     0      5                     :::873                  :::*        users:(("rsync",1647,5))  
tcp    LISTEN     0      5                      *:873                   *:*        users:(("rsync",1647,3))   

ps -ef|grep rsync  
root       1647      1  0 20:11 ?        00:00:00 rsync --daemon  
root       1660   1505  0 20:12 pts/0    00:00:00 grep --color=auto rsync    


6,加入开机自启动

echo "rsync --daemon" >>/etc/rc.local  
cat /etc/rc.local

rsync客户端配置步骤


1,创建密码文件,并修改权限

echo "123" > /etc/rsync.password (与服务端密码保持一致,免密登陆)
chmod 600 /etc/rsync.password(与服务端密码权限保持一致)
ll /etc/rsync.password


2,发送文件rsync(push或pull都是从客户端来操作)

(push)rsync -avz /backup/ [email protected]::backup/ --password-file=/etc/rsync.password
(pull)rsync -avz  rsync://[email protected]:873/backup/ /backup/ --password-file=/etc/rsync.password
echo $? = 0 就代表程序运行是正确的

排除推送

rsync -avz --exclude=a /root/test/ [email protected]::backup/ --password-file=/etc/rsync.password

排错

#Rsync server
#created by hejian 19:50 2019-3-17
##rsyncd.conf start##
uid = rsync
gid = rsync
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 192.168.0.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
#####################################
[backup]
comment = backup by hejian 19:50 2019-3-17
path = /backup  

虚拟机快照
rsync实战测试准备环境,修改IP,修改主机名,修改主题参数颜色,备份主要配置文件等

客户端报错

报错一:

[root@lamp01:/tmp]# rsync -avz /tmp/ [email protected]::backup --password-file=rsync.password
rsync: failed to connect to 192.168.105.136: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]  

排错:服务端防火墙开启了

报错二:

[root@lamp01:/tmp]# rsync -avz /tmp/ [email protected]::backup --password-file=rsync.password
rsync: could not open password file "rsync.password": No such file or directory (2)  
Password:  
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]  

第一个错误是路径写错了--password-file=/etc/rsync.password
第二个错误是服务端密码文件和客户端写反了,服务端写账号和密码,客户端只写密码;还有服务端的passwod文件都是root,backup文件用户是rsync;还有一个问题是拼错了一个单词导致一直验证失败

猜你喜欢

转载自www.cnblogs.com/hejian2836/p/11110469.html