Rsync常用参数
-a #归档模式传输, 等于-tropgDl -t -r -o -p -g -D -l
-v #详细模式输出, 打印速率, 文件数量等
-z #传输时进行压缩以提高效率
-r #递归传输目录及子目录,即目录下得所有目录都同样传输。
-t #保持文件时间信息
-o #保持文件属主信息
-p #保持文件权限
-g #保持文件属组信息
-l #保留软连接
-P #显示同步的过程及传输时的进度等信息
-D #保持设备文件信息
-L #保留软连接指向的目标文件
-e #使用的信道协议,指定替代rsh的shell程序
--exclude=PATTERN #指定排除不需要传输的文件
--exclude-from=file #文件名所在的目录文件
--bwlimit=100 #限速传输
--partial #断点续传
--delete #让目标目录和源目录数据保持一致
--password-file=xxx #使用密码文件
--exclude-from=fifile 排除参数
rsync -avz ./* rsync_backup@172.16.1.41::backup --exclude-from=1.txt
在推送到对方后会排除1.txt
--bwlimit=100 限速传输
限速1M每秒推送
rsync -avzP 1.txt rsync_backup@172.16.1.41::backup --bwlimit=1
--delete 数据一致(无差异同步)
rsync -avz ./ rsync_backup@172.16.1.41::backup --delete
拉取时:客户端数据与服务端数据一致,以服务端数据为准
推送时:服务端数据一客户端数据一致,一客户端数据为准
客户端脚本
[root@web01 ~]# vim client.sh
#!/bin/bash
#1.定义变量
DIR=/backup
HOSTNAME=$(hostname)
IP=$(hostname -I | awk '{print $2}')
DATE=$(date +%F)
SRC=${DIR}/${HOSTNAME}_${IP}_${DATE}
#2.创建表备份目录
[ -d $SRC ] || mkdir $SRC -p
#3.打包文件
[ -f $SRC/conf.tar.gz ] || cd /var && tar zcf $SRC/conf.tar.gz ./log/messages
#4.推送文件
export RSYNC_PASSWORD=123456
rsync -az $DIR/ rsync_backup@172.16.1.41::backup
#5.删除七天前数据
find $DIR/ -type d -mtime +7 | xargs rm -rf
校验文件
md5sum -c web01_172.16.1.7_2020-11-30/flag_2020-11-30
md5sum -c /backup/*_$(date +%F)/flag_2020-11-30(写入脚本)
使用邮件发送消息
#1.服务端配置邮件功能
[root@backup ~]# yum install mailx -y
[root@backup ~]# vim /etc/mail.rc
set from=253097001@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=253097001@qq.com
set smtp-auth-password=123123123
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
#2.测试发送邮件
[root@backup backup]# mail -s "校验结果" 1240206455@qq.com < server.sh
服务端脚本
#!/bin/bash
#1.定义变量
DIR=/backup
HOSTNAME=$(hostname)
IP=$(hostname -I | awk '{print $2}')
DATE=$(date +%F)
SRC=${DIR}/${HOSTNAME}_${IP}_${DATE}
#2.校验文件
md5sum -c $DIR/*_$DATE/flag > $DIR/result.txt
#3.将校验结果发送给管理员邮箱
mail -s "$DATE备份文件 校验结果" 1240206455@qq.com < $DIR/result.txt
#4.删除6个月之前的数据
find $DIR/ -type d -mtime +180 | xargs rm -rf
将服务端脚本加入定时任务
[root@backup ~]# crontab -e
#服务端每天7点将校验备份结果发给管理员
0 7 * * * /bin/bash /root/server.sh &> /dev/null
Rsync结合inotify
安装inotify
yum -y install inotify-tools
常用参数
-m 持续监控
-r 递归
-q 静默,仅打印时间信息
--timefmt 指定输出时间格式
--format 指定事件输出格式
%Xe 事件
%w 目录
%f 文件
-e 指定监控的事件
access 访问
modify 内容修改
attrib 属性修改
close_write 修改真实文件内容
open 打开
create 创建
delete 删除
umount 卸载
测试命令
/usr/bin/inotifywait -mrq --format '%Xe %w %f' -e
create,modify,delete,attrib,close_write /backup
实时备份脚本编写
[root@backup ~]# vim rsyn-inotify.sh
#!/bin/bash
dir=/backup
/usr/bin/inotifywait -mrq --format '%w %f' -e create,delete,attrib,close_write $dir |
while read line;do
cd $dir && rsync -az -R --delete . rsync_backup@172.16.1.31::backup --
password-file=/etc/rsync.passwd >/dev/null 2>&1
done &
NFS 服务
什么是NFS
共享存储,文件服务器
为什么使用NFS
1.实现多台服务器之间数据共享
2.实现多台服务器之间数据一致
NFS原理
vim /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash)
1.用户访问NFS客户端,将请求转化为函数
2.NFS通过TCP/IP连接服务端
3.NFS服务端接收请求,会先调用portmap进程进行端口映射
4.Rpc.nfsd进程用于判断NFS客户端能否连接服务端;
5.Rpc.mount进程用于判断客户端对服务端的操作权限
6.如果通过权限验证,可以对服务端进行操作,修改或读取