首先写一个脚本 backup.sh(其实就是text文件),存在任意位置,比如 /home 目录下。推荐用 Notepad+,可以方便的存成 Unix 格式,没有讨厌的回车符(Windows特有的回车符号,会导致 Linux 下脚本执行失败)。
#!/bin/bash
#备份文件,并启动上传FTP,然后删除本地文件
#时间变量,注意外面的一对不是小括号,是 TAB 键上面的那个字符。
date=`date +"%Y%m%d%H%M"`
#定义MYSQL
MYSQL_DBNAME=database #数据库名
MYSQL_USER=username #用户名
MYSQL_PASS=password #密码
#定义FTP
FTP_USER=username #ftp用户名
FTP_PASS=password #ftp密码
FTP_backup=backup #ftp上存放备份文件的目录
#定义文件名
sqlfile=mysql_$date.gz
webfile=web_$date.zip
#备份数据库,注意-p后面是没有空格的,我没有漏掉:)
mysqldump --opt $MYSQL_DBNAME -u $MYSQL_USER -h localhost -p$MYSQL_PASS | gzip > $sqlfile
#备份网站文件,也可以用tar命令,我觉得zip简单,自己改目录
zip -r $webfile /data/wwwroot#登录FTP,上传
ftp -n<<!open ipaddress
user $FTP_USER $FTP_PASS
binary
cd $FTP_backup
put $sqlfile
put $webfilebye
#删除本地文件
rm $sqlfile
rm $webfile
给脚本添加执行权限:
chmod +x /home/backup.sh
如果不像每天定时备份的话,这样也行了,需要的时候上SSH执行以下这个脚本,也能达到目的。如果像弄成像 Windows 计划任务那样无人值守,每天半夜备份的,就需要编辑一下这个文件
/etc/crontab
在最下面添加一行
00 1 * * * root /home/backup.sh
00 1 就是表示每天1点执行后面的命令。可自行修改,例如:30 12 ***,就是每天 12:30 运行这个脚本。
然后重启下 crontab
/etc/rc.d/init.d/crond restart
共有 0 条评论