我用CentOS作为网站服务器的OS,我是这样备份我的网站的。
以下简称网站服务器为C,我的电脑是A。首先,在C上用一段shell script备份网站:
backup.sh
#! /bin/bash
# This script is to backup the website files and dbmysqldump mydb -pmypass >/var/www/mysite/mydump.sql
datestamp=`date +%Y%m%d`
filewww=”/home/myuser/backup/mysite_””$datestamp””.zip”zip -r $filewww /var/www/mysite
然后可以先运行一下这个script,看看结果是否符合预期。如果没问题,就可以将其加入到crontab了,每天自动运行。
59 3 * * * /bin/bash /home/myuser/backup.sh
这样C这边每天凌晨会备份一次并生成一个zip压缩包。但是把C的备份留在C就没意义了,我还要定期的把zip从C传到A。由于A不像C那样不间断运行的,所以如果从C向A传输就需要测试A是否在线,麻烦。不如让A取C上的zip。这就涉及到另一个问题,身份验证。
为一段自动运行的script提供password,我觉得不如使用public key验证来得专业,而且简单,两步就搞定:
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub myuser@C
这期间问到private key password时直接回车就行了;myuser@C的password还是需要输入的(否则……)。
下一步就是在A上写script,获取C上的备份,成功获取后删除C上的备份,并将A本机上超过一个月的备份删除。
backup-mysite.sh
#!/bin/bash
#by Raymond, Jun, 2009
#1, get backup files from …
#2, delete after a successful copy
scp myuser@C:/home/myuser/backup/*.zip /home/myuser/backup
if [ $? -eq 0 ]
then
ssh myuser@C rm /home/myuser/backup/*.zip
fi#3, delete old backup files here
find /home/myuser/backup/*.zip -mtime +30 -exec rm {} \;
最后在把此script添加到A的crontab基本就没事了。过程类似上面的crontab,就偷懒不写了。注:懒是SA的美德。
Update: mysqldump –opt 对于恢复数据是个很好的开关.
3 responses to “LAMP服务器的简单备份方法”
你现在的网站是放在自己的服务器上??
我搞了一整天没有移成功.
加我gtalk聊聊吧,raynix at gmail dot com
受教了 这也是一种好方法!