九、搭建备份服务器 使用rsync服务
简介
Rsync是开源快速、多功能,可以实现全量和增量的本地或者远程数据同步备份的优秀工具。增量备份效率更高,可以同步内容也可以同步属性 [root@backup-41 ~]# rpm -qa rsync rsync-3.0.6-12.el6.x86_64 特性: 1、支持拷贝特殊文件如链接文件和设备等 2、可以有排除指定文件或目录同步的功能 3、可以做到保持源文件和目录的权限 4、可以实现增量同步 5、可以使用rcp,rsh,ssh等方式配合传输文件、 6、可以通过socket进程方式传输文件和数据,服务端和客户端 7、支持匿名的或认证(无需系统用户)的进程模式传输 场景: 定时备份,增量备份,实时备份
工作方式
第一种方式 local本地复制 相当于cp 第二种方式 通过远程的shell进行数据传输 pull 从远端拉到执行命令的服务器 push 从执行命令的服务器推到远端 第三种方式 rsync客户端之间的 pull 拉 push 推
第一种local方式参数
v :详细输出模式,传输时候的进度等信息 z:传输时进行压缩可以提高传输效率 a:归档模式,表示递归方式传输文件,保持所有文件属性 a把下面的信息全部包含 r:对子目录以递归模式,目录下所有目录都同样传输 t:保持文件时间信息 o:保持文件属主信息 g:保持文件权限 -g:保持文件属组信息 --exclude=PATTERN指定排除不需要传输的文件模式 ,指定文件排除 -exclude-from=file (文件名所在的目录文件)排除多个文件 --bwlimit=RATE limit socket I/Obandwidth 限速 --delete 保持两个目录一致
例子:
复制的功能: [root@backup-41 ~]# cp -a /etc/hosts /tmp/ [root@backup-41 ~]# rsync /etc/hosts /mnt/ 这里复制的时候注意,/etc/这个就是复制/etc里面的内容,/etc不带斜线那么就是复制etc下面所有的内容 复制属性: avz = vzrtopg [root@backup-41 ~]# rsync vzrtopg /etc/host /mnt/ rsync: link_stat "/root/vzrtopg" failed: No such file or directory (2) rsync: link_stat "/etc/host" failed: No such file or directory (2) rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6] 删除功能: 适用于本地和远端保持一致的情况 本地没有,远端也没有。本地没有,远端有,也会被删除 适用于两个目录或者服务器之间完全一样的情况、 rsync –avz –delete /本地 /远端
第二种方式使用远端的shell
借助通道,必须知道对方的密码 使用-e参数,使用ssh通道的方式 rsync 参数 源文件 –e ‘ssh –p 22’ 对方用户名@ip地址:/远程目录 [root@backup-41 /]# rsync -avz /etc/hosts -e 'ssh -p 22' root@10.0.0.31:/mnt The authenticity of host '10.0.0.31 (10.0.0.31)' can't be established. RSA key fingerprint is 50:c8:39:43:5f:c3:fd:7b:0a:4c:7d:1a:ab:51:c4:cd. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '10.0.0.31' (RSA) to the list of known hosts. root@10.0.0.31's password: sending incremental file list hosts sent 124 bytes received 31 bytes 20.67 bytes/sec total size is 158 speedup is 1.02
第三种以socket的方式传输数据
搭建rsync服务daemon守护进程 873端口,然后在其他服务器上(客户端)用rsync命令
注意:1、无论使用pull还是push都是在客户端执行的
2、rsync是搭建在backup备份服务器上面的
配置文件/etc/rsyncd.conf #用户uid uid = rsync #用户gid gid = rsync use chroot = no #最大连接数 max connections = 200 #超时参数单位秒 timeout = 300 #进程号对应的文件 pid file = /var/run/rsyncd.pid #锁文件,防止文件不一致 lock file = /var/run/rsync.lock #日志文件 log file = /var/log/rsyncd.log #模块 [backup] #共享的目录 path = /backup/ #忽略错误 ignore errors #只写 read only = false list = false #允许网段,一般内网网段 hosts allow = 172.168.1.0/24 #拒绝网段\这个和上面留一个 #hosts deny = 0.0.0.0/32 #链接虚拟账户 auth users = rsync_backup #虚拟账户密码文件 secrets file = /etc/rsync.password 2、创建虚拟账户 [root@backup-41 ~]# useradd rsync -s /sbin/nologin -M [root@backup-41 ~]# tail -1 /etc/passwd rsync:x:501:501::/home/rsync:/sbin/nologin 3、启动 [root@backup-41 ~]# rsync --daemon [root@backup-41 ~]# ps -ef |grep rsync |grep -v grep root 1349 1 0 09:56 ? 00:00:00 rsync --daemon 4、创建目录 root@backup-41 ~]# mkdir /backup 5、设置属主和组 [root@backup-41 ~]# chown rsync.rsync /backup/ [root@backup-41 ~]# ls -ld /backup/ drwxr-xr-x 2 rsync rsync 4096 12月 28 09:58 /backup/ 6、设置rsync的密码和访问权限 [root@backup-41 ~]# vim /etc/rsync.passwd [root@backup-41 ~]# cat /etc/rsync.passwd rsync_backup:123456 [root@backup-41 ~]# chmod 600 /etc/rsync.passwd [root@backup-41 ~]# ll /etc/rsync.passwd -rw------- 1 root root 20 12月 28 10:00 /etc/rsync.passwd 7查看端口对应的服务 [root@backup-41 ~]# lsof -i :873 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsync 1349 root 4u IPv4 11072 0t0 TCP *:rsync (LISTEN) rsync 1349 root 5u IPv6 11073 0t0 TCP *:rsync (LISTEN) [root@backup-41 ~]# netstat -lntup|grep 873 tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1349/rsync tcp 0 0 :::873 :::* LISTEN 1349/rsync 8、加入开机自启动 [root@backup-41 ~]# echo "/usr/bin/rsync --daemon">>/etc/rc.local [root@backup-41 ~]# tail -1 /etc/rc.local /usr/bin/rsync --daemon 9、排错的话查看日志 [root@backup-41 ~]# tail /var/log/rsyncd.log 2017/12/28 09:56:58 [1349] rsyncd version 3.0.6 starting, listening on port 873
配置客户端
1、首先创建和服务端一样的密码文件 [root@NFS-31 ~]# vim /etc/rsync.password [root@NFS-31 ~]# vim /etc/rsync.password 2、设置权限 [root@NFS-31 ~]# chmod 600 /etc/rsync.password [root@NFS-31 ~]# cat /etc/rsync.password 123456 [root@NFS-31 ~]# ll /etc/rsync.password -rw------- 1 root root 7 12月 28 10:15 /etc/rsync.password 3、创建打包文件 [root@NFS-31 ~]# mkdir -p /backup
模拟推送
推送 pull 客户端推送到服务端 方法一 在客户端创建一个文件a [root@NFS-31 backup]# touch a 推送到服务端,免密码推送 [root@NFS-31 backup]# rsync -avz /backup/ rsync_backup@172.168.1.41::backup/ --password-file=/etc/rsync.password sending incremental file list ./ a sent 879 bytes received 30 bytes 1818.00 bytes/sec total size is 0 speedup is 0.00 方法二 [root@NFS-31 backup]# rsync -avz /backup/ rsync://rsync_backup@172.168.1.41/backup/子目录/ --password-file=/etc/rsync.password sending incremental file list sent 840 bytes received 8 bytes 1696.00 bytes/sec total size is 0 speedup is 0.00
Rsync服务多模块
2、创建这个模块目录并且授权 [root@backup-41 backup]# mkdir /pyrene [root@backup-41 backup]# chown rsync.rsync /pyrene [root@backup-41 backup]# ls -ld /pyrene drwxr-xr-x 2 rsync rsync 4096 12月 28 11:09 /pyrene 3从客户端哪里推送,这里两种方法 方法一 [root@NFS-31 backup]# rsync -avz /backup rsync://rsync_backup@172.168.1.41/pyrene --password-file=/etc/rsync.password sending incremental file list sent 857 bytes received 9 bytes 1732.00 bytes/sec total size is 0 speedup is 0.00 方法二 [root@NFS-31 backup]# rsync -avz /backup/ rsync_backup@172.168.1.41::pyrene --password-file=/etc/rsync.password sending incremental file list sent 840 bytes received 8 bytes 1696.00 bytes/sec total size is 0 speedup is 0.00
排除同步客户端指定 加上—exclude参数
rsync优点:
1、增量备份,支持socket,集中备份
2、远程shell可以使用加密传输
缺点:
1、大量小文件同步时间比较长
2、同步大文件10g大文件有时候会中断,可以通过断点续传等实现传参
一次性远程拷贝可以用scp
Rsync是开源快速、多功能,可以实现全量和增量的本地或者远程数据同步备份的优秀工具。增量备份效率更高,可以同步内容也可以同步属性
[root@backup-41 ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
特性:
1、支持拷贝特殊文件如链接文件和设备等
2、可以有排除指定文件或目录同步的功能
3、可以做到保持源文件和目录的权限
4、可以实现增量同步
5、可以使用rcp,rsh,ssh等方式配合传输文件、
6、可以通过socket进程方式传输文件和数据,服务端和客户端
7、支持匿名的或认证(无需系统用户)的进程模式传输