Board logo

标题: CentOS6使用Python3脚本备份站点(Zabbix)+crontab计划任务 [打印本页]

作者: admin    时间: 2019-9-28 09:27     标题: CentOS6使用Python3脚本备份站点(Zabbix)+crontab计划任务

笺注:这是在 CentOS6.9编译安装Zabbix4.4.5 的基础上进行的。 登录MySQL: mysql -u"root" -p"888" 图片1.png 查看所有数据库用户及其主机信息: select user,host from mysql.user; 图片2.png 查看Zabbix所使用的数据库用户的信息及其权限: mysql> show grants for zabbix@localhost; +---------------------------------------------------------------------------------------------------------------+ | Grants for zabbix@localhost | +---------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY PASSWORD '*DEEF4D7D88CD046ECA02A80393B7780A63E7E789' | | GRANT ALL PRIVILEGES ON `zabbix`.* TO 'zabbix'@'localhost' | +---------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.05 sec) 注释:数据库用户zabbix@localhost其实已经有备份库zabbix的权限了。 再创建一个数据库用户zhuohua@localhost,并赋权: mysql> grant all on *.* to zhuohua@localhost identified by '168'; Query OK, 0 rows affected (0.02 sec) 查看数据库用户zhuohua@localhost的权限: mysql> show grants for zhuohua@localhost; +-------------------------------------------------------------------------------------------------------------------------+ | Grants for zhuohua@localhost | +-------------------------------------------------------------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'zhuohua'@'localhost' IDENTIFIED BY PASSWORD '*242E46A1E8D30FE06F7CE37B55BFC25BA981D70C' | +-------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) 注释:数据库用户zhuohua@localhost已经有完全管理库zabbix的权限了。 再次查看所有数据库用户及其主机信息: 图片3.png 显示所有的库: show databases; 图片4.png 数据库的备份命令: [root@Zabbix_server_01 ~]# which mysqldump /usr/bin/mysqldump Zabbix的站点目录: [root@Zabbix_server_01 ~]# cd /home/wwwroot/ [root@Zabbix_server_01 wwwroot]# ls default zabbix.zhuohua.store 要先创建备份文件存放的目录: [root@Zabbix_server_01 ~]# mkdir -p /home/backup/ 备份脚本“backup_zabbix.py”的内容: [root@Zabbix_server_01 ~]# cat backup_zabbix.py #coding=utf-8 import os import datetime dt = datetime.datetime.now() def func1(): try: os.popen("/usr/bin/mysqldump -u'zhuohua' -p'168' zabbix > /zabbix.sql").read() #使用数据库用户zhuohua@localhost进行备份 path1 = "/zabbix.sql" path2 = "/home/wwwroot/zabbix_" + dt.strftime('%Y%m%d') + ".sql" os.rename(path1,path2) #重命名文件 except: print("数据库备份失败。") else: print("数据库备份成功。") def func2(): try: os.chdir("/home/wwwroot/") #切换工作目录 os.popen("tar -cjf /home/backup/zabbix.zhuohua.store.tar.bz2 zabbix.zhuohua.store *.sql").read() # 把站点目录和数据库文件都压缩到一个文件里 os.chdir("/home/backup/") path1 = "zabbix.zhuohua.store.tar.bz2" path2 = "zabbix.zhuohua.store_" + dt.strftime('%Y%m%d_%H%M%S') + ".tar.bz2" os.rename(path1,path2) except: print("站点目录备份失败。") else: print("站点目录备份成功。") def func3(): db_today = "/home/wwwroot/zabbix_" + dt.strftime('%Y%m%d') + ".sql" os.remove(db_today) #删除文件 if __name__ == '__main__': func1() #备份站点数据库zabbix func2() #备份站点目录 func3() #删除当天的临时数据库文件 设置脚本权限: [root@Zabbix_server_01 ~]# chmod a+x backup_zabbix.py 脚本运行的效果:(备份Zabbix) [root@Zabbix_server_01 ~]# python3 backup_zabbix.py 数据库备份成功。 站点目录备份成功。 [root@Zabbix_server_01 ~]# 备份成功: [root@Zabbix_server_01 ~]# cd /home/backup/ [root@Zabbix_server_01 backup]# ls zabbix.zhuohua.store_20200620_193120.tar.bz2 [root@Zabbix_server_01 backup]# [root@Zabbix_server_01 backup]# ls -lh *.bz2 -rw-r--r-- 1 root root 14M 6月 20 19:31 zabbix.zhuohua.store_20200620_193120.tar.bz2 [root@Zabbix_server_01 backup]# 解压压缩文件到当前目录: [root@Zabbix_server_01 backup]# tar -jxf zabbix.zhuohua.store_20200620_193120.tar.bz2 [root@Zabbix_server_01 backup]# 解压出来的站点目录和数据库文件: [root@Zabbix_server_01 backup]# ls |grep -v *.bz2 zabbix_20200620.sql zabbix.zhuohua.store [root@Zabbix_server_01 backup]# [root@Zabbix_server_01 backup]# ll |grep -v *.bz2 总用量 17180 -rw-r--r-- 1 root root 3803039 6月 20 19:31 zabbix_20200620.sql drwxr-xr-x 10 www www 4096 2月 8 11:08 zabbix.zhuohua.store [root@Zabbix_server_01 backup]# ###### 还原Zabbix 删除旧的站点目录: [root@Zabbix_server_01 ~]# rm -rf /home/wwwroot/zabbix.zhuohua.store 还原站点目录: [root@Zabbix_server_01 ~]# cd /home/backup/ [root@Zabbix_server_01 backup]# tar -jxf zabbix.zhuohua.store_20200620_193120.tar.bz2 -C /home/wwwroot/ 查看还原后站点目录:(站点目录还原成功;截图有省略) [root@Zabbix_server_01 ~]# cd /home/wwwroot/zabbix.zhuohua.store [root@Zabbix_server_01 zabbix.zhuohua.store]# ls 图片5.png 还原站点数据库: mysql> drop database zabbix; Query OK, 149 rows affected (0.41 sec) mysql> create database zabbix character set utf8 collate utf8_general_ci; Query OK, 1 row affected (0.00 sec) mysql> use zabbix; Database changed mysql> source /home/wwwroot/zabbix_20200620.sql 站点数据库还原成功: 图片6.png 笺注:实验中,Zabbix的备份和还原都是正常的。 ############ ############ Zabbix的数据库配置文件: [root@Zabbix_server_01 ~]# find / -name "zabbix.conf.php" /home/wwwroot/zabbix.zhuohua.store/conf/zabbix.conf.php [root@Zabbix_server_01 ~]# 图片7.png 注释:数据库用户的信息要与Zabbix的数据库配置文件的信息一致。 更改Zabbix的数据库配置文件里的数据库用户信息:(使用数据库用户zhuohua@localhost,更改即生效) 图片8.png ############ ############ 使用crontab周期性计划任务运行Python3脚本,实现站点的自动备份 编辑crontab计划任务: [root@Zabbix_server_01 ~]# crontab -e -bash: crontab: command not found 解决方法: [root@Zabbix_server_01 ~]# yum -y install vixie-cron [root@Zabbix_server_01 ~]# which crontab /usr/bin/crontab 启动crond: [root@Zabbix_server_01 ~]# service crond start 正在启动 crond:[确定] 确认crond在运行中: [root@Zabbix_server_01 ~]# ps -ef |grep crond |grep -v grep root 17383 1 0 20:26 ? 00:00:00 crond 确认开机会自动启用crond: [root@Zabbix_server_01 ~]# chkconfig --list crond crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 给系统用户root创建一个crontab计划任务:( 6月20日23时18分自动运行脚本“backup_zabbix.py”;用户登不登录,任务都会执行 ) [root@Zabbix_server_01 ~]# crontab -e -u root 追加: 18 23 20 6 * /usr/local/bin/python3 /root/backup_zabbix.py 查看系统用户root的crontab计划任务: [root@Zabbix_server_01 ~]# whoami root [root@Zabbix_server_01 ~]# crontab -l 18 23 20 6 * /usr/local/bin/python3 /root/backup_zabbix.py [root@Zabbix_server_01 ~]# [root@Zabbix_server_01 ~]# crontab -l -u root 18 23 20 6 * /usr/local/bin/python3 /root/backup_zabbix.py [root@Zabbix_server_01 ~]# 使用crontab计划任务备份出来的文件:(三种显示方式) [root@Zabbix_server_01 backup]# pwd /home/backup [root@Zabbix_server_01 backup]# ll *.bz2 -rw-r--r-- 1 root root 13780413 6月 20 19:31 zabbix.zhuohua.store_20200620_193120.tar.bz2 -rw-r--r-- 1 root root 13781001 6月 20 23:18 zabbix.zhuohua.store_20200620_231801.tar.bz2 [root@Zabbix_server_01 backup]# ls -lh *.bz2 -rw-r--r-- 1 root root 14M 6月 20 19:31 zabbix.zhuohua.store_20200620_193120.tar.bz2 -rw-r--r-- 1 root root 14M 6月 20 23:18 zabbix.zhuohua.store_20200620_231801.tar.bz2 [root@Zabbix_server_01 backup]# du -ah *.bz2 14M ./zabbix.zhuohua.store_20200620_193120.tar.bz2 14M ./zabbix.zhuohua.store_20200620_231801.tar.bz2 [root@Zabbix_server_01 backup]# ###### 使用crontab周期性计划任务运行Python3脚本,实现星期六那天,每隔2分钟就自动删除一次目录/home/backup/下的.bz2文件 再给系统用户root创建一个crontab计划任务:( 星期六那天,每隔2分钟就运行一次脚本“dd.py”;用户登不登录,任务都会执行) [root@Zabbix_server_01 ~]# crontab -e -u root 追加: */2 * * * 6 /usr/local/bin/python3 /root/dd.py 再次查看系统用户root的crontab计划任务: [root@Zabbix_server_01 ~]# crontab -l -u root 18 23 20 6 * /usr/local/bin/python3 /root/backup_zabbix.py */2 * * * 6 /usr/local/bin/python3 /root/dd.py 脚本“dd.py”的内容:(删除目录/home/backup/下的.bz2文件) [root@Zabbix_server_01 ~]# cat dd.py #coding=utf-8 import os String_1 = "rm -r /home/backup/*.bz2" Key_1 = os.popen(String_1).read() print(Key_1) ###### 清空系统用户root的所有crontab计划任务: [root@Zabbix_server_01 ~]# crontab -r -u root [root@Zabbix_server_01 ~]# [root@Zabbix_server_01 ~]# crontab -l -u root no crontab for root 相关文章: Linux常用命令(二) Linux下MySQL的备份和还原 备份+还原Zabbix CentOS6安装Python3 Python3调用Linux命令 Windows2012R2_UPUPW_网站的备份和还原(使用Python3脚本)

图片附件: 图片1.png (2022-2-20 21:32, 54.5 KB) / 下载次数 61
http://blog.zhuohua.store/attachment.php?aid=19123&k=b82f1c7437714aca8d212aaee576603f&t=1714432073&sid=431qCj



图片附件: 图片2.png (2022-2-20 21:32, 9.12 KB) / 下载次数 61
http://blog.zhuohua.store/attachment.php?aid=19124&k=db748b46c1f87d22e577311f40e7dceb&t=1714432073&sid=431qCj



图片附件: 图片3.png (2022-2-20 21:33, 10.23 KB) / 下载次数 70
http://blog.zhuohua.store/attachment.php?aid=19125&k=667e4eaf3f170960569a963872ee39a0&t=1714432073&sid=431qCj



图片附件: 图片4.png (2022-2-20 21:34, 8.37 KB) / 下载次数 62
http://blog.zhuohua.store/attachment.php?aid=19126&k=6410f6936e84f81ec585221e3f1d51a1&t=1714432073&sid=431qCj



图片附件: 图片5.png (2022-2-20 21:38, 95.66 KB) / 下载次数 74
http://blog.zhuohua.store/attachment.php?aid=19127&k=3d414a9e3a5db8a79863ce1b147729c9&t=1714432073&sid=431qCj



图片附件: 图片6.png (2022-2-20 21:39, 27.79 KB) / 下载次数 65
http://blog.zhuohua.store/attachment.php?aid=19128&k=72f291b74fd4e67a0c79c00cd2984b52&t=1714432073&sid=431qCj



图片附件: 图片7.png (2022-2-20 21:40, 101.71 KB) / 下载次数 61
http://blog.zhuohua.store/attachment.php?aid=19129&k=cf6e647a29c91516d92c392a733c24b3&t=1714432073&sid=431qCj



图片附件: 图片8.png (2022-2-20 21:40, 58.96 KB) / 下载次数 62
http://blog.zhuohua.store/attachment.php?aid=19130&k=bc3d88a74feef0768ada188ac228d96d&t=1714432073&sid=431qCj






欢迎光临 blog.zhuohua.store (http://blog.zhuohua.store/) Powered by Discuz! 7.2