- 2011-39
首先,安装ncftp ,在这里可以看到最新版本:http://ftp.ncftp.com/download/
温州seo于2011-3-9 9:52:37留。下面的安装过程以3.2.4版为例,如果版本更新了也只需要把3.2.4替换掉即可,
在centos,ncftp是不可以通过yum来安装的cd /usr/src #我喜欢把下载的源文件放到这里,个人爱好问题,别问我为什么
wget ftp://ftp.ncftp.com/ncftp/ncftp-3.2.4-src.tar.gz
tar zxvf ncftp-3.2.4-src.tar.gz
cd ncftp-3.2.4
./configure –prefix=/usr/local/ncftp
make
make && make install
ln -s /usr/local/ncftp/bin/ncftpget /usr/bin/ncftget
ln -s /usr/local/ncftp/bin/ncftpput /usr/bin/ncftput接着编写备份脚本,这里是压缩为tar.gz包的方式上传到远程ftp服务器备份。这里要使用notepad++或者UE,保存时要选择UNIX换行符。另外,事先需要创建/backup/day/这个文件夹。
#!/bin/bash
rm -rf /backup/day/*
cd /backup/day/
cp -rf /usr/local/mysql/var/ /backup/day/sql_db_$(date +%Y%m%d)
echo “ready to tar in 10s .”
sleep 10
tar zcvf `hostname`_sqldata_$(date +%Y%m%d).tar.gz sql_db_$(date +%Y%m%d)
echo “ready to upload in 10s .”
sleep 10
/usr/local/ncftp/bin/ncftpput -u ftpusername -p ftppassword ftpserver / /backup/day/`hostname`_sqldata_$(date +%Y%m%d).tar.gz
echo “upload done . delete local tmp backup in 10s .”
sleep 10
rm -f `hostname`_sqldata_$(date +%Y%m%d).tar.gz
echo “have a rest of 5s .”
sleep 5
rm -rf sql_db_$(date +%Y%m%d)
echo “done .”首先,安装ncftp ,在这里可以看到最新版本:http://ftp.ncftp.com/download/
下面的安装过程以3.2.4版为例,如果版本更新了也只需要把3.2.4替换掉即可,
在centos,ncftp是不可以通过yum来安装的
cd /usr/src #我喜欢把下载的源文件放到这里,个人爱好问题,别问我为什么wget ftp://ftp.ncftp.com/ncftp/ncftp-3.2.4-src.tar.gz
tar zxvf ncftp-3.2.4-src.tar.gz
cd ncftp-3.2.4
./configure –prefix=/usr/local/ncftp
make
make && make install
ln -s /usr/local/ncftp/bin/ncftpget /usr/bin/ncftget
ln -s /usr/local/ncftp/bin/ncftpput /usr/bin/ncftput
复制代码接着编写备份脚本,这里是压缩为tar.gz包的方式上传到远程ftp服务器备份。这里要使用notepad++或者UE,保存时要选择UNIX换行符。另外,事先需要创建/backup/day/这个文件夹。 #!/bin/bash
rm -rf /backup/day/*
cd /backup/day/
cp -rf /usr/local/mysql/var/ /backup/day/sql_db_$(date +%Y%m%d)
echo “ready to tar in 10s .”
sleep 10
tar zcvf `hostname`_sqldata_$(date +%Y%m%d).tar.gz sql_db_$(date +%Y%m%d)
echo “ready to upload in 10s .”
sleep 10
/usr/local/ncftp/bin/ncftpput -u ftpusername -p ftppassword ftpserver / /backup/day/`hostname`_sqldata_$(date +%Y%m%
d).tar.gz
echo “upload done . delete local tmp backup in 10s .”
sleep 10
rm -f `hostname`_sqldata_$(date +%Y%m%d).tar.gz
echo “have a rest of 5s .”
sleep 5
rm -rf sql_db_$(date +%Y%m%d)
echo “done .”
复制代码保存为backupsql.sh,上传到某个目录下,比如/usr/local/ncftp/ ###注意修改此文件权限,赋予+w权限,否则不会执行.
第三步进行测试。
root登录ssh,输入:
/bin/bash /usr/local/ncftp/backupsql.sh
随着程序的运行,会有文字提示。当程序结束时登录远程ftp服务器查看是否备份成功。
第四步,加入crontab。
运行 crontab -e0 4 * * * /bin/bash /usr/local/ncftp/backupsql.sh
0 10 * * * /bin/bash /usr/local/ncftp/backupsql.sh
0 16 * * * /bin/bash /usr/local/ncftp/backupsql.sh
0 22 * * * /bin/bash /usr/local/ncftp/backupsql.sh这个是每六小时备份一次mysql并上传。方法笨了点,但是非常有效.
步骤就这么多。值得一提的是,不要以为设了计划任务来备份就高枕无忧了,要知道FTP服务器也不一定是100% UPTIME,每天至少登录那个FTP去把备份文件下载到本地才是正途。
此外,网站文件也完全可以采用相同的方式进行备份,只需对脚本略作改动即可。
最后写一下恢复备份的方法:
1. 停止mysql
2. 把备份文件覆盖/usr/local/mysql/var/下的所有文件
这一步就比较随意了,推荐压包上传后解压,省时省力。
3. 开启mysql #部分需要确认恢复后的文件权限及目录权限,请注意文件权限改为666既可.其它重要补充:
自动删除5天前的备份
rm -rf /home/data_$(date -d -5day +”%Y%m%d”).tar每次备份,会按时间生成文件,如20100908.tar.gz.在生成文件之前或之后用程序 算出五天前的文件名,直接删除之。
这样每天备份一个文件,删除一个五天前的文件,备份库中就永远只有最近五天的文件了。
1楼 304不锈钢管
Post:2011-3-15 15:52:51