自己写了个脚本,来实现对我服务器上PHP+MySQL虚拟主机的自动备份。虽然目前只有我一个人在使用,但是即使这样,我也不希望数据因为意外事故损坏掉。
备份的原理,就是把Apache和MySQL先停掉,然后用tar打包HTML目录和MySQL的数据库目录,恢复MySQL和Apache服务之后,再慢慢通过FTP客户端传到我的一台远程FTP服务器上(其实是我在网上买的一个虚拟主机空间)。
备份周期完全由自己决定,我目前把它丢在/etc/cron.weekly下面让它每周运行一次。备份的文件会以备份日期自动命名。以后等我有了比较大的FTP空间之后,我就设置为按日备份。再在自己工作站上做一个按周归档,那就万无一失了。
脚本文件如下(隐去部分敏感信息):
#!/bin/sh HOME=/root # Stop the services /etc/init.d/httpd stop /etc/init.d/mysqld stop # Tar the html bag cd /var/www tar -czf /tmp/html.tar.gz html # Tar the mysql/data bag cd /usr/local/mysql tar -czf /tmp/mysql_data.tar.gz data # Start the services /etc/init.d/mysqld start /etc/init.d/httpd start # Build the ftp script DATESTRING=$(date +%Y%m%d) echo "open www.某某.com" > /tmp/ftp_$DATESTRING.txt echo "put /tmp/html.tar.gz /wwwroot/vhostdatabackup/html_$DATESTRING.tar.gz" >> /tmp/ftp_$DATESTRING.txt echo "put /tmp/mysql_data.tar.gz /wwwroot/vhostdatabackup/mysql_data_$DATESTRING.tar.gz" >> /tmp/ftp_$DATESTRING.txt echo "exit" >> /tmp/ftp_$DATESTRING.txt # Connect the backup FTP site and upload these files ftp < /tmp/ftp_$DATESTRING.txt # Clean temp files rm -f /tmp/ftp_$DATESTRING.txt rm -f /tmp/html.tar.gz rm -f /tmp/mysql_data.tar.gz |
增补于2006-09-10:
如果想在cron中运行,在脚本中FTP登录之前还要加上HOME=/root,否则无法实现自动登录。原因……是crond运行脚本时的环境变量太过“干净”了。
如果想在cron中运行,在脚本中FTP登录之前还要加上HOME=/root,否则无法实现自动登录。原因……是crond运行脚本时的环境变量太过“干净”了。
没有评论:
发表评论