day34笔记(4月21日)
备份任务实战
客户端
客户端需求:
1.客户端每天凌晨1点在服务器本地打包备份(/etc目录和/var/log目录)
2.客户端备份的数据必须存放至以 "主机名_ip地址_当前时间" 命名的目录中
3.客户端最后通过rsync推送本地已经打包好的备份文件至backup服务器
4.客户端服务器本地保留最近7天的数据,避免浪费磁盘空间
1.思路:由于备份命令过长,建议使用脚本的形式交给定时任务执行
systemctl start crond
crontab -e
00 01 * * * /my_crontab.sh
每天凌晨1点
2.思路:分别取出需求中的值,可以有两种写法$()或者``,注意添加的目录需求是/backup/目录下
$(hostname)
`hostname`
$(ifconfig eth0 | awk 'NR==2{print $2}')
`ifconfig eth0 | awk 'NR==2{print $2}'`
$(date '+%F')
`date '+%F'`
mkdir -p /backup`hostname`_`ifconfig eth0 | awk 'NR==2{print $2}'`_`date '+%F'`
cd / tar -zcf /backup/`hostname`_`ifconfig eth0 | awk 'NR==2{print $2}'`_`date '+%F'`/etc.tgz etc
cd / tar -zcf /backup/`hostname`_`ifconfig eth0 | awk 'NR==2{print $2}'`_`date '+%F'`/log.tgz var/log
3.思路,使用rsyncd服务备份数据到指定机器(推送)
注意密码文件或密码变量,密码文件的虚拟用户和密码要与服务端指定的一致
注意虚拟用户传输的语法:rsync 参数 源文件 虚拟用户@主机名或ip::模块名
systemctl start rsyncd
ps -ef | grep rsync
netstat -tunlp | grep rsync
rsync -avzP --password-file=/etc/rsync.password /backup/ rsync_backup@10.0.0.41::backup
4.有两中写法
写法一:
find /backup/ -mtime +7 |xargs -i rm -rf {}
写法二:
find /backup/ -mtime +7 -delete
总体流程:
1、安装rsync
yum install rsync -y
2、将需求写成脚本
vim /my_crontab.sh
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
mkdir -p /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date "+%F")
cd / && tar -zcf /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date "+%F")/etc.tgz etc
cd / && tar -zcf /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date "+%F")/log.tgz var/log
md5sum /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date "+%F")/*.tgz > /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date "+%F")/all_data_md5.txt
systemctl start rsyncd
echo '123123' >/etc/rsync.password
rsync -aczP --password-file=/etc/rsync.password /backup/ rsync_backup@10.0.0.41::backup
find /backup/ -mtime +7 -delete
3、赋予脚本执行权限
chmod u+x /my_crontab.sh
4、开启定时任务,设定定时任务
systemctl start crond
crontab -e
00 01 * * * /bin/bash /my_crontab.sh
5、调试脚本
bash -x /my_crontab.sh
服务端
服务端需求:
1.服务端部署rsync,用于接收客户端推送过来的备份数据
yum install rsync -y
uid = rsync
gid = rsync
fake super = yes
use chroot = no
max connections = 200
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.178.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = This is backup!
path = /backup/
[data]
comment = this is secord backup dir,to website data..
path = /data
useradd rsync -s /sbin/nologin -M
mkdir -p /data/ /backup/
chown -R rsync.rsync /backup/
chown -R rsync.rsync /data/
echo 'rsync_backup:123123' > /etc/rsync.password
chmod 600 /etc/rsync.password
systemctl start rsyncd
systemctl restart rsyncd
2.服务端需要每天校验客户端推送过来的数据是否完整
md5sum -c /backup/nfs-31_10.0.0.31_$(date "+%F")/all_data_md5.txt
3.服务端需要每天校验的结果通知给管理员
yum install mailx -y
vim /etc/mail.rc
set from=915082263@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=915082263@qq.com
set smtp-auth-password=nhhipsnnzyfkbfcf
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
md5sum -c /backup/nfs-31_10.0.0.31_$(date "+%F")/all_data_md5.txt > /backup/nfs-31_10.0.0.31_$(date "+%F")/check_md5_result.txt
mail -s "check-rsync-$(date +%F)" 9150822263@qq.com < /backup/nfs-31_10.0.0.31_$(date "+%F")/check_md5_result.txt
4.服务端仅保留6个月的备份数据,其余的全部删除
注意:所有服务器的备份目录必须都为/backup
客户端需求拆解
find /backup/ -type f +mtime +180 -delete
-------------------------------------------------------------------
写一个脚本,设置定时任务,完成2、3、4需求
vim /my_check.sh
md5sum -c /backup/nfs-31_10.0.0.31_$(date "+%F")/all_data_md5.txt > /backup/nfs-31_10.0.0.31_$(date "+%F")/check_md5_result.txt
mail -s "check-rsync-$(date +%F)" 915082263@qq.com < /backup/nfs-31_10.0.0.31_$(date "+%F")/check_md5_result.txt
find /backup/ -type f -mtime +180 -delete
chmod u+x /my_check.sh
crontab -e
* * * * * /bin/bash /my_check.sh
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)