网站自动备份
作者:shenmeng 发布时间:December 10, 2009 分类:默认分类
网站备份还是挺重要的,有的控制面板提供自动备份功能,若没有就只好自己写了。备份主要是文件和数据库,将他们打包。如果存到别的主机,就还要用ftp传输。下面是我的备份脚本:
1、备份数据库和文件并打包
数据库备份:
db_user='user'
db_pass='pass'
db_name='--all-databases'
mysqldump -u $db_user -p$db_pass $db_name >backup.sql
$db_user , $db_pass ,$db_name 分别是数据库用户名、密码和数据库名称。
备份整个数据库时db_name为--all-databases
打包数据库和文件:
file_dir='/home/www'
backup_date=`date +%Y%m%d`
tar -zcf sql$backup_date.tgz backup.sql
tar -zcf file$backup_date.tgz $file_dir
tar -cf all$backup_date.tar sql$backup_date.tgz file$backup_date.tgz
$file_dir为要打包的目录
$backup_date取得当前日期(放入文件名中以区别不同时间的备份文件)
后三步分别为打包数据库、打包文件、将二者一起打包。
2、用ftp传输备份文件
ftp_host='1.1.1.1'
ftp_user='user'
ftp_pass='passwd'
ftp_dir='/'
ftp -i -n $ftp_host <<EOF
user $ftp_user $ftp_pass
cd $ftp_dir
binary
prompt off
put all$backup_date.tar
quit
$ftp_host ,$ftp_user ,$ftp_pass ,$ftp_dir 分别为ftp主机、用户、密码、目录。
完整的脚本:
#!/bin/bash
ftp_host='1.1.1.1'
ftp_user='user'
ftp_pass='passwd'
ftp_dir='/'
file_dir='/home/www'
db_user='user'
db_pass='pass'
db_name='--all-databases'
mysqldump -u $db_user -p$db_pass $db_name >backup.sql
backup_date=`date +%Y%m%d`
tar -zcf sql$backup_date.tgz backup.sql
tar -zcf file$backup_date.tgz $file_dir
tar -cf all$backup_date.tar sql$backup_date.tgz file$backup_date.tgz
ftp -i -n $ftp_host <<EOF
user $ftp_user $ftp_pass
cd $ftp_dir
binary
prompt off
put all$backup_date.tar
quit
另外如果需要定时执行,可以将上述脚本加入crontab中,可以运行crontab -e 编辑crontab任务表,
加入一行(假设备份脚本为backup.sh位于/root目录):
0 4 */5 * * /root/backup.sh
上述命令将使/root/backup.sh脚本每5天的4点以root身份执行一次。
crontab各字段意义:
1 分
2 时
3 天
4 月
5 星期
6 命令
指定具体值,则在指定时刻执行,* 为通配符,即每次都执行,/n 代表每n个该时刻执行一次。
已有 3 条评论 »
有没有PHP脚本备份mysql的啊?
我给你发了个邮件,你看看
相当不错,方便好用,谢咯