<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post//</link>
<title><![CDATA[vps备份网站mysql数据到邮箱/ftp]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[服务器技术]]></category>
<pubDate>Sun, 11 Aug 2013 21:51:06 +0000</pubDate> 
<guid>http://www.dzhope.com/post//</guid> 
<description>
<![CDATA[ 
	用vps也有一阵了,但是谁也不知道哪天vps就会跑路了，也说不定;无论现在做什么,都要先学会未雨绸缪.<br/><br/>其实,关于网上的有很多种方法备份vps的mysql和数据.但是往往都不是很理想.<br/>首先我觉得备份数据一定要满足一下几点:<br/><br/>支持低成本备份mysql：网站数据其实并不会经常改动,经常要备份的主要是mysql,所谓的低成本就是自动化,而且可以发送到免费的邮箱.<br/>mysql必须是分卷备份的:不要把N个数据库合并成一个sql文件,那样我不会恢复.<br/>如果你网站很大图片很多，那么还得随时可以备份到ftp.<br/>不过终于在Cat上找到了这个备份的方法,还是相当靠谱的..贴出代码先～<br/><br/>首先安装mutt:<br/><div class="code"><br/>yum install sendmail mutt<br/></div><br/><br/>vi AutoBackupToFtp.sh<br/><div class="code"><br/>#!/bin/bash<br/>#你要修改的地方从这里开始<br/>MYSQL_USER=root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #mysql用户名<br/>MYSQL_PASS=123456&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#mysql密码<br/>MAIL_TO=cat@hostloc.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #数据库发送到的邮箱<br/>FTP_USER=cat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#ftp用户名<br/>FTP_PASS=123456&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #ftp密码<br/>FTP_IP=imcat.in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#ftp地址<br/>FTP_backup=backup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#ftp上存放备份文件的目录,这个要自己得ftp上面建的<br/>WEB_DATA=/home/www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#要备份的网站数据<br/>#如果不需要ftp功能请注释掉FTP_USER,FTP_IP.ftp.backup<br/>#你要修改的地方从这里结束<br/> <br/>#定义数据库的名字和旧数据库的名字<br/>DataBakName=Data_$(date +&quot;%Y%m%d&quot;).tar.gz<br/>WebBakName=Web_$(date +%Y%m%d).tar.gz<br/>OldData=Data_$(date -d -5day +&quot;%Y%m%d&quot;).tar.gz<br/>OldWeb=Web_$(date -d -5day +&quot;%Y%m%d&quot;).tar.gz<br/>#删除本地3天前的数据<br/>rm -rf /home/backup/Data_$(date -d -3day +&quot;%Y%m%d&quot;).tar.gz /home/backup/Web_$(date -d -3day +&quot;%Y%m%d&quot;).tar.gz<br/>cd /home/backup<br/>#导出数据库,一个数据库一个压缩文件<br/>for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e &#039;SHOW DATABASES&#039; &#124; xargs`; do<br/>&nbsp;&nbsp;&nbsp;&nbsp;(/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS $&#123;db&#125; &#124; gzip -9 - &amp;gt; $&#123;db&#125;.sql.gz)<br/>done<br/>#压缩数据库文件为一个文件<br/>tar zcf /home/backup/$DataBakName /home/backup/*.sql.gz<br/>rm -rf /home/backup/*.sql.gz<br/>#发送数据库到Email,如果数据库压缩后太大,请注释这行<br/>echo &quot;主题:数据库备份&quot; &#124; mutt -a /home/backup/$DataBakName -s &quot;内容:数据库备份&quot; $MAIL_TO<br/>#压缩网站数据<br/>tar zcf /home/backup/$WebBakName $WEB_DATA<br/>#上传到FTP空间,删除FTP空间5天前的数据<br/>ftp -v -n $FTP_IP &amp;lt;&amp;lt; END<br/>user $FTP_USER $FTP_PASS<br/>type binary<br/>cd $FTP_backup<br/>delete $OldData<br/>delete $OldWeb<br/>put $DataBakName<br/>put $WebBakName<br/>bye<br/>END<br/></div><br/>chmod +x AutoBackupToFtp.sh<br/>利用crontab 实现每天00:00自动备份网站文件和数据库上传到FTP空间<br/><div class="code"><br/>crontab -e<br/>00 00 * * * /home/AutoBackupToFtp.sh<br/></div><br/>一切都很顺利，但是也遇到了一点小麻烦,在cat博客里面也有人问道.<br/>执行<br/><div class="code"><br/>./AutoBackupToFtp.sh<br/></div><br/><br/>以后却出现<br/><div class="code"><br/>mysqldump: Got error: 1044: Access denied for user &#039;root&#039;@&#039;localhost&#039; to database &#039;information_schema&#039; when using LOCK TABLES<br/></div><br/><br/>在csdn找到解决办法是因为没有LOCK TABLES的权限，于是查看mysqldump的帮助，加上参数–skip-lock-tables<br/><br/><div class="code"><br/>mysqldump --opt -h192. 168.0 . 156&nbsp;&nbsp;-uUsername -pPassword --skip-lock-tables databaseName&amp;gt;database.sql<br/></div><br/><br/>还有就是会提示:<br/><div class="code"><br/>tar: Removing leading `/&#039; from member names<br/></div><br/>其实大家不用在意这个,根据鸟哥的说法:<br/><div class="code"><br/>『tar: Removing leading `/’ from member names(移除了檔名開頭的 `/’ )』所告知的情況！<br/><br/>那為什麼要拿掉根目錄呢？主要是為了安全！我們使用 tar 備份的資料可能會需要解壓縮回來使用， 在 tar 所記錄的檔名 (就是我們剛剛使用 tar -jtvf 所察看到的檔名) 那就是解壓縮後的實際檔名。 如果拿掉了根目錄，假設你將備份資料在 /tmp 解開，那麼解壓縮的檔名就會變成『/tmp/etc/xxx』。 但『如果沒有拿掉根目錄，解壓縮後的檔名就會是絕對路徑， 亦即解壓縮後的資料一定會被放置到 /etc/xxx 去！』如此一來，你的原本的 /etc/ 底下的資料， 就會被備份資料所覆蓋過去了！<br/></div><br/>Tags - <a href="http://www.dzhope.com/tags/mutt/" rel="tag">mutt</a> , <a href="http://www.dzhope.com/tags/%25E8%2587%25AA%25E5%258A%25A8%25E5%25A4%2587%25E4%25BB%25BD/" rel="tag">自动备份</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post//#blogcomment</link>
<title><![CDATA[[评论] vps备份网站mysql数据到邮箱/ftp]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.dzhope.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>