rsync 复制软件应用与实现
1、rsync是什么?
英文全称Remote synchronization
开源,高速的,数据复制(拷贝)工具
2、rsync的作用?
工作中需要定时、实时数据备份,本地服务器目录,可能是不同的机器、机房之间的数据备份,用rsync完成。
3、rsync功能特性? 七个特性
4、全量和增量的区别
全量:全部备份
增量:差异化备份,最近增加的内容进行备份=====》效率高
5、rsync复制原理:
6、rsync三种工作模式
1》把数据从一个地点移动到另一个地点相当于cp
2》通过加参数实现删除的功能,相当于rm命令。
[root@backup ~]# touch /null.txt
删除文件内容

[root@backup ~]# rsync -r --delete /null.txt /opt/hosts
[root@backup ~]# cat /opt/hosts
[root@backup ~]#
删除目录
[root@backup ~]# mkdir /null

[root@backup ~]# rsync -r --delete /null/ /opt/
[root@backup ~]# ls /opt/
3》查看属性信息功能,相当于ls命令。
[root@backup ~]# rsync /etc/hosts
-rw-r--r-- 332 2019/04/12 11:24:41 hosts
第二种模式:远程shell模式
借助类似ssh隧道传输数据,适合不同的机器
异地拷贝,相当于scp
强调一个重点:适合rsync
******** null和null/ 区别,null是目录和目录下的内容,
null/只是目录下的内容,不含本身。
拉门 推门 思考:
pull,拉:从远端拉取到本地。
语法:
rsync [OPTION...] [USER@]HOST:SRC... [DEST]
rsync命令 参数选项 [认证用户]@[主机地址]:[源路径] 本地路径
语法:
push,推:从本地推到远端。
rsync [OPTION...] SRC... [USER@]HOST:[DEST]
rsync命令 参数选项 本地路径 [认证用户]@[主机地址]:[目标路径]
pull,拉:从远端拉取到本地。
rsync -avz [email protected]:/opt/hosts /opt
rsync -avz -e "ssh -p 22" [email protected]:/opt/hosts /opt
push,推:从本地推到远端。
rsync -avz /etc/hosts [email protected]:/opt/
rsync -avz /etc/hosts -e 'ssh -p 22' [email protected]:/opt/
第三种模式:rsync守护进程模式
首先要搭建rsync服务端(要有守护进程),
rsync服务模式:开启后台进程,接受别人访问
7、rsync命令参数
rsync命令参数:
-v, --verbose 显示输出过程
-z, --compress 压缩
-a, --archive 多参数集合(-rtopgDl)
-r, --recursive 递归
-t, --times 保持修改时间属性
-o, --owner 保持属主不变
-p, --perms 保持权限不变
-g, --group 保持用户组不变
-l, --links 保持拷贝软连接
-q, --quiet 安静的拷贝
--bwlimit=KBPS 限制I/O带宽,KBytes per second。
--delete 删除
--exclude 排除
--exclude-from 从文件中排除
企业常用参数组合:-avz或者-vzrtopg
8、rsync守护进程模式应用实践
(1)以下操作都是在backup服务器
1)安装
[root@backup ~]# rsync --version
rsync version 3.1.2 protocol version 31
[root@backup ~]# yum install rsync(不需要)
2)配置配置文件/etc/rsyncd.conf
备份
cp /etc/rsyncd.conf{,.ori}
cat>/etc/rsyncd.conf< #rsync_config_______________start #created by oldboy #site: http://www.oldboyedu.com uid = rsync gid = rsync use chroot = no fake super = yes max connections = 200 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 = 172.16.1.0/24 hosts deny = 0.0.0.0/32 auth users = rsync_backup secrets file = /etc/rsync.password [backup] comment = welcome to oldboyedu backup! path = /backup/ EOF man rsync 查命令的参数 man rsyncd.conf 查配置参数 https://www.samba.org/ftp/rsync/rsync.html 创建用户和备份目录 [root@backup ~]# useradd rsync [root@backup ~]# id rsync uid=1001(rsync) gid=1001(rsync) 组=1001(rsync) [root@backup ~]# mkdir -p /backup [root@backup ~]# chown -R rsync.rsync /backup/ [root@backup ~]# ls -ld /backup/ drwxr-xr-x 2 rsync rsync 6 4月 15 12:12 /backup/ 3、启动和检查 rsync --daemon(c6及以前) systemctl start rsyncd systemctl enable rsyncd systemctl status rsyncd [root@backup ~]# ps -ef|grep sync|grep -v grep #检查进程 root 7521 1 0 11:39 ? 00:00:00 /usr/bin/rsync --daemon --no-detach [root@backup ~]# netstat -lntup|grep 873 #检查端口 tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 7521/rsync tcp6 0 0 :::873 :::* LISTEN 7521/rsync [root@backup ~]# lsof -i :873 #检查端口 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsync 7521 root 3u IPv4 41439 0t0 TCP *:rsync (LISTEN) rsync 7521 root 5u IPv6 41440 0t0 TCP *:rsync (LISTEN) 4、配置密码文件 [root@backup ~]# echo "rsync_backup:oldboy" > /etc/rsync.password [root@backup ~]# chmod 600 /etc/rsync.password [root@backup ~]# cat /etc/rsync.password rsync_backup:oldboy [root@backup ~]# ls -l /etc/rsync.password -rw------- 1 root root 20 4月 15 11:51 /etc/rsync.password 方法1:认证密码文件 [root@nfs01 ~]# echo "oldboy" > /etc/rsync.password [root@nfs01 ~]# chmod 600 /etc/rsync.password [root@nfs01 ~]# cat /etc/rsync.password oldboy [root@nfs01 ~]# ls -l /etc/rsync.password -rw------- 1 root root 7 4月 15 11:55 /etc/rsync.password 方法2: [root@nfs01 ~]# echo ' export RSYNC_PASSWORD=oldboy' >>/etc/bashrc [root@nfs01 ~]# tail -1 /etc/bashrc export RSYNC_PASSWORD=oldboy [root@nfs01 ~]# . /etc/bashrc [root@nfs01 ~]# echo $RSYNC_PASSWORD oldboy 客户端完成nfs01配置完成 守护进程模式客户端rsync的命令语法: 配置服务器端守护进程,实现数据传输: 错误1: [root@nfs01 ~]# rsync -avz /etc/hosts [email protected]::backup --password-file=/etc/rsync.password @ERROR: invalid uid rsync rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2] 解答: [root@backup ~]# useradd rsync [root@backup ~]# id rsync uid=1001(rsync) gid=1001(rsync) 组=1001(rsync) [root@backup ~]# mkdir -p /backup [root@backup ~]# chown -R rsync.rsync /backup/ chown -R, --recursive 递归处理所有的文件及子目录 [root@backup ~]# ls -ld /backup/ drwxr-xr-x 2 rsync rsync 6 4月 15 12:12 /backup/ 错误2: [root@nfs01 ~]# rsync -avz /etc/hosts [email protected]::backup --password-file=/etc/rsync.password sending incremental file list hosts rsync: chgrp ".hosts.YDuTjO" (in backup) failed: Operation not permitted (1) sent 223 bytes received 124 bytes 694.00 bytes/sec total size is 332 speedup is 0.96 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2] 解答:增加如下参数到/etc/rsyncd.conf fake super = yes #不用root用户也可以存储文件的完整属性。 This allows the full attributes of a file to be stored without having to have the daemon actually running as root. [root@backup ~]# grep fake /etc/rsyncd.conf fake super = yes 改完配置,要重启服务: [root@backup ~]# systemctl restart rsyncd 在测试:成功 [root@nfs01 ~]# rsync -avz /etc/hosts [email protected]::backup --password-file=/etc/rsync.password sending incremental file list hosts sent 89 bytes received 49 bytes 276.00 bytes/sec total size is 332 speedup is 2.41 rsync -avz /etc [email protected]::backup --password-file=/etc/rsync.password 服务端检查: [root@backup ~]# ls /backup/ hosts [root@backup ~]# ls /backup/ etc hosts