Linux 下自动备份网站文件和数据库到FTP的脚本
  • 分类:Linux
  • 发表:2013-03-18
  • 围观(1,399)
  • 评论(0)

首先写一个脚本 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 $webfile

bye

#删除本地文件

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 条评论

Top