欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

shell实现自动备份mysql、整站数据的两个脚本分享

程序员文章站 2022-10-13 22:12:52
案例一:shell+cron实现mysql自动备份且自动删除n天前备份复制代码 代码如下:#!/bin/shdump=/usr/local/mysql/bin/mysqld...

案例一:shell+cron实现mysql自动备份且自动删除n天前备份

复制代码 代码如下:

#!/bin/sh
dump=/usr/local/mysql/bin/mysqldump
out_dir=/home/ldl/xxx/backup/
linux_user=ldl

db_name=ldl
db_user=ldl
db_pass=xxx
#how much days backup most
days=1

#core of script
cd $out_dir
date=`date +%y_%m_%d`
out_sql="$date.sql"
tar_sql="mysql_$date.tar.gz"
$dump --default-character-set=utf8 --opt -u$db_user -p$db_pass $db_name > $out_sql
tar -czf $tar_sql ./$out_sql
rm $out_sql
chown $db_name:nobody ./$tar_sql
find ./ -name "mysql*" -type f -mtime +$days -exec rm {} \;


+++++++++++++++++++++++++++++++++++++++++++++++++++++
mysqldump不用解释了吧,注意-uuser -ppass这样才可以,不能有空格。

复制代码 代码如下:
find ./ -name “mysql*” -type f -mtime +$days -exec rm {} \;

这一句主要是在-mtime上-mtime +5表示5天前的文件,统一删除

我的操作系统是centos 5.4,只要把脚本拷贝到/etc/cron.daily,并设置为相同的权限就可以执行了,不用再添加crontab。

案例二:centos下自动备份网站和数据库的脚本并上传至ftp

假定这台服务器的网站目录为:/home/www,数据库程序路径为:/usr/local/mysql/bin,数据库名为:levil,ftp服务器为:ftphost,下面先来看完整的自动备份脚本(自动备份脚本保存位置为:/home/backup.sh):

复制代码 代码如下:

#!/bin/bash
cd /home
webbakname=web_$(date +%y%m%d).tar.gz
tar zcvf $webbakname www
sqlbakname=sql_$(date +%y%m%d).tar.gz
/usr/local/mysql/bin/mysqldump -uusername -ppassword levil>backup.sql
tar zcvf $sqlbakname backup.sql
ftp -nv ftphost << eof
user ftpname ftppass
put $webbakname
put $sqlbakname
quit
eof
rm -f backup.sql $webbakname $sqlbakname

下面来给大家一一讲解:首先进入/home目录,定义webbakname变量为网站备份的文件名,文件名格式为web日期.tar.gz,定义sqlbakname变量为数据库备份的文件名,文件名格式为sql日期.tar.gz,把整个网站目录www打包到webbakname文件名中,使用mysqldump导出指定数据库内容到backup.sql,然后把数据库备份打包到sqlbakname文件中,本机备份工作至此结束,如果你没有足够大的远程ftp空间的话,可以直接把备份文件下载到本机,但我还是建议直接备份到另外一个服务器上的ftp空间中,做到完全自动化备份,这时你需要把脚本中的ftphost、ftpname和ftppass分别替换成你的ftp信息,整个备份过程就完成了。

接着输入chmod +x backup.sh给脚本添加执行权限,再输入:crontab -e编辑任务自动开始时间,比如我输入:

00 05 1 /home/backup.sh 就代表每周1的上午5点整执行该自动备份操作。

在这一切完成之后,你可以先把自动任务时间改为当前的接近时间,看自动备份脚本是否工作正常,测试ok的话以后就不用担心这台服务器出现任何问题导致数据丢失了,当然如果你的数据更新比较频繁的话,建议把自动备份时间调整为每日