rsync 是一个用于增量文件传输的开源工具,不得不说,rsync简直是不一样服务器间传输文件、同步文件的利器。与FTP相比,它具备很是简单的安装和配置方法。并且,rsync能够只拷贝发生过变化的文件,这就让传输效率很是高。若是你考虑安全问题,也能够经过 ssh 协议来进行传输。rsync 用来进行备份和镜像也很是棒,它的这些特性多是你很是须要的: 支持连接、属主、属组合权限的拷贝 支持包含或排出条件,相似 tar 不须要 root 权限 支持匿名或受权的 rsync server 模式 rsync监听端口:873 rsync运行模式:C/S 客户端/服务端 | B/S 浏览器/服务端
彻底备份:将客户端的全部数据内容所有备份至服务端(效率低下,占用空间) 增量备份:将客户端的增量备份至服务端(提升备份效率,节省时间,适合异地备份)
sync 同步:刷新文件系统缓存,强制将修改过的数据块写入磁盘,而且更新超级块。 async 异步:将数据先放到缓冲区,再周期性(通常是30s)的去同步到磁盘。 rsync 远程同步:remote synchronous
一、推(上传):全部主机推送本地数据至Rsync备份服务器,会致使数据同步缓慢(适合少许数据备份) 二、拉(下载):Rsync备份服务器端拉取全部主机上的数据,会致使备份服务器开销大。
本地方式 远程方式 守护进程
-a #归档模式传输, 等于-tropgDl -v #详细模式输出, 打印速率, 文件数量等 -z #传输时进行压缩以提升效率 -r #递归传输目录及子目录,即目录下得全部目录都一样传输。 -t #保持文件时间信息 -o #保持文件属主信息 -p #保持文件权限 -g #保持文件属组信息 -l #保留软链接 -P #显示同步的过程及传输时的进度等信息 -D #保持设备文件信息 -L #保留软链接指向的目标文件 -e #使用的信道协议,指定替代rsh的shell程序 --exclude=PATTERN #指定排除不须要传输的文件模式 --exclude-from=file #文件名所在的目录文件 --bwlimit=100 #限速传输 --partial #断点续传 --delete #让目标目录和源目录数据保持一致
[root@backup ~]# rsync /etc/passwd /tmp/
[root@backup ~]# ls /tmp/passwd
/tmp/passwd
shell
拉(下载):vim
rsync -avz root@172.16.1.41:/root/ /backup/ #拉取远程目录下的全部文件
rsync -avz root@172.16.1.41:/root /backup/ #拉取远程目录以及目录下的全部文件
推(上传):浏览器
rsync -avz /backup/2018-07-23 root@172.16.1.41:/tmp/
缓存
[root@backup ~]# yum install rsync -y
安全
查询配置文件存放的路径bash
[root@backup ~]# rpm -qc rsync
/etc/rsyncd.conf
服务器
[root@backup ~]# vim /etc/rsyncd.conf
uid = rsync #运行进程的用户
gid = rsync #运行进程的用户组
port = 873 #监听端口
fake super = yes #无需让rsync以root身份运行,容许存储文件的完整属性
use chroot = no #关闭假根功能
max connections = 200 #最大链接数
ignore errors #忽略错误信息
read only = false #对备份数据可读写
list = false #不容许查看模块信息
auth users = rsync_backup #定义虚拟用户,做为链接认证用户
secrets file = /etc/rsync.password #定义rsync服务用户链接认证密码文件路径
log file = /var/log/rsyncd.log #日志文件
#####################################
[backup] #定义模块信息
comment = welcome to oldboyedu backup! #模块注释信息
path = /backup #定义接收备份数据目录
ssh
1.建立rsync帐户,不容许登陆不建立家目录异步
useradd -M -s /sbin/nologin rsync
2.建立备份目录(尽量磁盘空间足够大),受权rsync用户为属主async
mkdir /backup
chown -R rsync.rsync /backup/
建立虚拟用户和密码,并赋予600权限
echo "rsync_backup:1" >/etc/rsync.password
chmod 600 /etc/rsync.password
systemctl start rsyncd
systemctl enable rsyncd
启动后检查对应端口
[root@bogon ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 4758/rsync
客户端:
Access via rsync daemon: 守护进程方式传输
1.将客户端的/etc/passwd 推送至 rsync服务端[backup]
rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync -avz /etc/passwd rsync_backup@172.16.1.41::backup
2.将rsync服务端模块[/backup]下载至本地
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync -avz rsync_backup@172.16.1.41::backup /opt
3.同步时不输入密码[第一种方式,sersync]
echo "1" >/etc/rsync.password
chmod 600 /etc/rsync.password
rsync -avz rsync_backup@172.16.1.41::backup /opt --password-file=/etc/rsync.password
4.同步时不输入密码[第二种方式:写脚本时使用]
export RSYNC_PASSWORD=1
rsync -avz rsync_backup@172.16.1.41::backup /opt
rsync -avz --delete rsync_backup@172.16.1.41::backup/ /data/ --password-file=/etc/rsync.password
rsync -avzP --bwlimit=1 /opt/test.dosk rsync_backup@172.16.1.41::backup
统一全部的目录站点是/backup
1.备份什么 1.系统重要的配置文件
/etc/fstab /var/spool/cron/root
2.服务的配置文件
/etc/rsyncd.conf
3.日志
/var/log/secure /var/log/message
4.脚本
/server/scripts
2.怎么备份
/backup/nfs_172.16.1.31_2018_09_05 /backup/nfs_172.16.1.31_2018_09_06 /backup/nfs_172.16.1.31_2018_09_07 3.编写脚本
[root@nfs ~]# echo $(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F)
nfs_172.16.1.31_2018-09-05
[root@nfs ~]# mkdir /server/scripts -p
脚本
#脚本不可重复执行, 每次执行都会进行推送,能够进行判断 [root@nfs01 ~]# cat /server/scripts/backup_rsync_md5.sh #!/bin/bash #1.定义变量 Path=/backup Host=$(hostname) Addr=$(ifconfig eth1|awk 'NR==2{print $2}') Date=$(date +%F) Dest=${Path}/${Host}_${Addr}_${Date} #2.检查目录是否存在 [ -d $Dest ] || mkdir -p $Dest #3.拷贝须要备份的文件至$Dest cd / && \ # system backup tar czf $Dest/system.tar.gz etc/passwd etc/fstab etc/rc.d/rc.local var/spool/cron # user backup tar czf $Dest/user.tar.gz server/ # config backup tar czf $Dest/config.tar.gz etc/rsyncd.conf #4.进行md5校验 md5sum $Dest/*.tar.gz > $Dest/flag_${Date} #5.客户端推送至rsync备份服务端 Rsync_User=rsync_backup Rsync_Addr=172.16.1.41 Rsync_Module=backup export RSYNC_PASSWORD=123456 rsync -avz $Path/ ${Rsync_User}@${Rsync_Addr}::${Rsync_Module} #6.客户端本地保留最近7天的文件 find $Path/ -type d -mtime +7|xargs rm -rf