Linux下备份重要文件(数据库)的脚本代码、以及rar超强加密压缩保存

2020-12-29 1025点热度 0人点赞 0条评论

数据无价,服务器运行中,如果不做备份,总觉得心理毛毛的,每天备份还是很有必要的,以Linux为例,利用crontab定时任务,每天备份服务器数据,如果有MySQL服务,也dump一份数据,在本地服务器上保留3天的备份,方便有数据误删除等,可以随时恢复;最后也要将数据复制到其他远程服务器,或者网盘(例如Google Drive),防止服务器发生以外导致数据丢失。

脚本用到的rar程序下载,Linux版本,请到https://www.rarlab.com/download.htm

新建备份文件vim /opt/backup.sh
#! /bin/sh

#当天时间,比如2020-12-25
nowdate=`date +%Y-%m-%d`
#如果要精确到小时,可以这样 nowTime=`date +%Y-%m-%d-%H`

#再定义三天前的日期,可以在本地机器删除3天前的备份文件
olddate=`date +%Y-%m-%d -d '3 day ago'`

#如果有MySQL服务,可以把MySQL dump出来
mysqldump -uusername -ppassword --databases xxxdb > /opt/mysqldump/xxxdb_$nowdate.sql

#把需要备份的文件夹打包起来,可以多个文件夹,也可以文件夹下排除某个文件夹
tar --exclude=/opt/download -zcf /home/server001.backup_$nowdate.tar.gz /opt /etc/letsencrypt /var/spool/cron /var/www /etc/nginx /usr/share/nginx /root/.bash* /root/.config

#或者用rar压缩 把需要备份的数据文件夹压缩成rar,rar的压缩效率还是挺好的,如果要压缩加密码 可以加-Ppassword参数
#rar需要下载,不是winrar,命令行程序免费的
/opt/rar a -m5 -agYYYYMMDD -pPASSWORD /home/server001.backup_.rar /opt /etc/letsencrypt /var/spool/cron /var/www /etc/nginx /usr/share/nginx /root/.bash* /root/.config -x/opt/download

#把备份文件复制到其他服务器,我这里用rclone弄到GoogleDrive
/usr/bin/rclone copy /home/server001.backup_$nowdate.tar.gz 'test:/IT/'

#也可以mount一个远程服务器,或者通过scp、ftp等传输到其他服务器
cp /home/server001.backup_$nowdate.tar.gz /mnt/server002/

#删除本地机器3天前的备份
rm -f /home/server001.backup_$olddate.tar.gz
测试脚本运行,能否产生备份文件
#将backup.sh权限改成可执行
chmod +x /opt/backup.sh

#运行
sh /opt/backup.sh
排程Cron每天指定

crontab -e

#每天1点18分执行备份
18 1 * * * /opt/backup.sh

Windows下备份脚本,请看 https://blog.terrynow.com/2020/12/30/windows-server-backup-scripts/

Linux下Shell的日期的格式化,请看:https://blog.terrynow.com/2022/01/08/linux-shell-date-format-and-show-days-ago-and-after/

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论