shell脚本示例2:rsync异地备份数据

羌俊恩 社区创始人
运维领域优质创作者
博客专家认证
2022-08-11 13:00:44
#!/bin/bash

#备份日期

DATE=`date +"%F-%H-%M"`

#主机名或域名
Backup_Domain="web-server-01"

#备份数据目录

Data_Backup=(/usr/local/apache-tomcat-6.0.44 /home/scripts /var/spool/cron /etc/rc.d/rc.local /etc/mtab /etc/hosts)

#系统IP地址

IP_addr=`/sbin/ifconfig | awk '/inet addr:/&&/Bcast:192.168/ {split($2,a,":"); print a[2]}'`

#数据存放的目录名称

Backup_Dir=${Backup_Domain}_${IP_addr}

#新建备份目录

mkdir /opt/${Backup_Dir}

#删除之前的备份文件,节省磁盘空间

rm -f /opt/${Backup_Dir}/*

cd /opt

#备份数据文件并压缩

for i in ${Data_Backup[*]}

do

i_name=`echo $i|awk -F "[/]" '{print $NF}'`

tar cjvf ./${Backup_Dir}/${Backup_Domain}_${i_name}_${DATE}.tar.bz2 --exclude=*.log.* --exclude="*rootlog" --exclude="*catalina.out" --exclude=*.log --exclude

=*.tar.* $i

done

#把备份的目录压缩成一个文件

tar cjvf ${Backup_Dir}_${DATE}_all.tar.bz2 ${Backup_Dir}

#把备份的文件通过rsync传到备份机192.168.1.1上

rsync -azP ${Backup_Dir}_${DATE}_all.tar.bz2 rsync@192.168.1.1::backup_day --password-file=/etc/rsyncd_backup.secrets > /tmp/backup.log 2>&1

#提取数据文件大小和文件传输的大小

SEND_SIZE=`cat /tmp/backup.log | awk '/total size is/ {print $4}'`

FILE_SIZE=`ls -l ${Backup_Dir}_${DATE}_all.tar.bz2 | awk '{print $5}'`

#判断传输是否准确,如果准确将本地文件进行删除

if [[ ${SEND_SIZE} -eq ${FILE_SIZE} ]]

then

rm -f /opt/${Backup_Dir}/*

rm -f /opt/${Backup_Dir}_${DATE}_all.tar.bz2

fi

 

...全文
25 1 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
羌俊恩 社区创始人 08-11
  • 打赏
  • 举报
回复

运维脚本接龙了,后续跟上

相关推荐
发帖
云享运维知识库

2.1w+

社区成员

欢迎各位小伙伴踊跃加入,将日常运维中遇到的问题贴出来,解决方案分享出来,或自己的博客关于运维的文章分享到这里,来一起营造一个运维的知识库,以提升运维工作更加高效快捷,减少重复造车轮的无限循环。
devopslinux开源 企业社区 北京·西城区
社区管理员
  • 羌俊恩
加入社区
帖子事件
创建了帖子
2022-08-11 13:00
社区公告

本社区:旨在推进运维云化知识库建设,为更多运维提供参考及经验交流;加入社区的同学,如果运维工作中遇到问题或最后得到解决,有劳凑空发帖,分享共建FAQ社区。

得到解决方案的同学,请积极为发帖的同学点赞、评论、能力范围内打赏激励。另外本社区采用游戏修仙角色作为鼓励,对不同贡献者授予对应“勋章”。

最后祝愿社区繁荣昌盛,此致敬礼!!!