<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>空格相关文章列表 | 皇家元林</title>
	<atom:link href="https://hjyl.org/tags/%E7%A9%BA%E6%A0%BC/feed/" rel="self" type="application/rss+xml" />
	<link>https://hjyl.org</link>
	<description>刘元林的个人博客</description>
	<lastBuildDate>Wed, 24 Apr 2013 16:01:04 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://img.hjyl.org/uploads/2019/10/cropped-about-me-32x32.png</url>
	<title>空格相关文章列表 | 皇家元林</title>
	<link>https://hjyl.org</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>一个空格惹的祸</title>
		<link>https://hjyl.org/power-of-space/</link>
					<comments>https://hjyl.org/power-of-space/#comments</comments>
		
		<dc:creator><![CDATA[皇家元林]]></dc:creator>
		<pubDate>Wed, 24 Apr 2013 16:01:04 +0000</pubDate>
				<category><![CDATA[元林手札]]></category>
		<category><![CDATA[LNMP]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[vps]]></category>
		<category><![CDATA[批处理]]></category>
		<category><![CDATA[空格]]></category>
		<guid isPermaLink="false">https://hjyl.org/?p=2479</guid>

					<description><![CDATA[在VPS的SSH命令里因为一个空格，导致整个站乃至整个VPS崩溃，比然重装。在此折腾了.SH命令，成功自动备份整站、Nginx配置和数据库到另外一个VPS中。]]></description>
										<content:encoded><![CDATA[<p>今天一下午就干了一件事——重装lnmp。其实装lnmp只需要半个小时的时间，当然这取决于VPS的性能。装了N遍了，重装lnmp对我来说是一件很痛苦的事。但今天不得不做，因为我犯了一个错，多打了一个空格。同时也表示我对这位朋友的歉意。丢了一个月的数据。</p>
<p>记得上次犯过这样的错误，当时用mv的命令，mv xxx /* /home/wwwroot/xxx.com，于是整站乃至整个vps就错乱了。不管是FTP客户端还是SSH都失效了。怎么办？我已经记不起当时是怎么解决的。貌似提前备份了一下，只需要用另外一台vps将数据拷过来就好了。可这次不同的是用了rm -r xxx /* ,咔，看出来了没，一个空格，就这么一个空格，全部数据被删除了，甚至系统文件都没了。我恨，恨不得将自己碎尸万段。这就好比本山大叔那双手一样，一抖多按了一个零，3000变30000，没了！钱乃小事，关键那么多数据没了，多可惜啊！</p>
<p>所以今天特别百度了很多关于SSH最简单最快速的备份教程。其实很久以前我也研究过这个教程，当时愣是没整明白。今天，我终于搞明白了。这跟win下的批处理是一样的道理和效果。老霸气了。</p>
<pre class="source" style="font-family: '[object HTMLOptionElement]','Consolas','Lucida Console','Courier New'; color: #000000;"><span style="color: #008800; font-style: italic;">#!/bin/bash</span>
<span style="color: #008800; font-style: italic;">#Funciont: Backup website and mysql database</span>
<span style="color: #008800; font-style: italic;">#Author: 皇家元林</span>
<span style="color: #008800; font-style: italic;">#Website: http://hjyl.org/</span>
<span style="color: #008800; font-style: italic;">#IMPORTANT!!!Please Setting the following Values!</span>
<span style="color: #008800; font-style: italic;">######~Set MySQL UserName and password~######</span>
<span style="color: #000000;">MYSQL_UserName</span><span style="color: #000000;">=数据库用户名</span>
<span style="color: #000000;">MYSQL_PassWord</span><span style="color: #000000;">=</span>数据库密码

<span style="color: #008800; font-style: italic;">######~Set MySQL Database you want to backup~######</span>
<span style="color: #000000;">Backup_Database_Name1</span><span style="color: #000000;">=</span>数据库名
<span style="color: #000000;">Backup_Database_Name2</span><span style="color: #000000;">=</span>数据库名
<span style="color: #000000;">Backup_Database_Name3</span><span style="color: #000000;">=</span>数据库名
<span style="color: #000000;">Backup_Database_Name4</span><span style="color: #000000;">=</span>数据库名

<span style="color: #008800; font-style: italic;">######~Set FTP Information~######</span>
<span style="color: #000000;">FTP_HostName</span><span style="color: #000000;">=</span>FTP的地址
<span style="color: #000000;">FTP_UserName</span><span style="color: #000000;">=</span>FTP用户名
<span style="color: #000000;">FTP_PassWord</span><span style="color: #000000;">=</span>FTP密码
<span style="color: #000000;">FTP_BackupDir</span><span style="color: #000000;">=</span>/home/backup #备份文件路径

<span style="color: #008800; font-style: italic;">#Values Setting END!</span>
<span style="color: #000000;">TodayWWWBackup</span><span style="color: #000000;">=</span>xhjyl_<span style="color: #000080; font-weight: bold;">$(</span>date +<span style="color: #0000ff;">"%Y%m%d"</span>).tar.gz
<span style="color: #000000;">TodayDBBackup</span><span style="color: #000000;">=</span>db-*-<span style="color: #000080; font-weight: bold;">$(</span>date +<span style="color: #0000ff;">"%Y%m%d"</span>).sql.gz
<span style="color: #000000;">OldWWWBackup</span><span style="color: #000000;">=</span>xhjyl_<span style="color: #000080; font-weight: bold;">$(</span>date -d -7day +<span style="color: #0000ff;">"%Y%m%d"</span>).tar.gz
<span style="color: #000000;">OldDBBackup</span><span style="color: #000000;">=</span>db-*-<span style="color: #000080; font-weight: bold;">$(</span>date -d -7day +<span style="color: #0000ff;">"%Y%m%d"</span>).sql.gz

<span style="color: #008800; font-style: italic;"># backup nginx configure files</span>
tar -czvf /home/wwwroot/nginx_conf_<span style="color: #000080; font-weight: bold;">$(</span>date +%Y%m%d).tar.gz /usr/local/nginx/conf/vhost

<span style="color: #008800; font-style: italic;">#backup mysql</span>
/usr/local/mysql/bin/mysqldump --add-drop-table -u<span style="color: #000000;">$MYSQL_UserName</span> -p<span style="color: #000000;">$MYSQL_PassWord</span> <span style="color: #000000;">$Backup_Database_Name1</span> | gzip &gt; /home/backup/db-<span style="color: #000000;">$Backup_Database_Name1</span>-<span style="color: #000080; font-weight: bold;">$(</span>date +<span style="color: #0000ff;">"%Y%m%d"</span>).sql.gz
/usr/local/mysql/bin/mysqldump --add-drop-table -u<span style="color: #000000;">$MYSQL_UserName</span> -p<span style="color: #000000;">$MYSQL_PassWord</span> <span style="color: #000000;">$Backup_Database_Name2</span> | gzip &gt; /home/backup/db-<span style="color: #000000;">$Backup_Database_Name2</span>-<span style="color: #000080; font-weight: bold;">$(</span>date +<span style="color: #0000ff;">"%Y%m%d"</span>).sql.gz
/usr/local/mysql/bin/mysqldump --add-drop-table -u<span style="color: #000000;">$MYSQL_UserName</span> -p<span style="color: #000000;">$MYSQL_PassWord</span> <span style="color: #000000;">$Backup_Database_Name3</span> | gzip &gt; /home/backup/db-<span style="color: #000000;">$Backup_Database_Name3</span>-<span style="color: #000080; font-weight: bold;">$(</span>date +<span style="color: #0000ff;">"%Y%m%d"</span>).sql.gz
/usr/local/mysql/bin/mysqldump --add-drop-table -u<span style="color: #000000;">$MYSQL_UserName</span> -p<span style="color: #000000;">$MYSQL_PassWord</span> <span style="color: #000000;">$Backup_Database_Name4</span> | gzip &gt; /home/backup/db-<span style="color: #000000;">$Backup_Database_Name4</span>-<span style="color: #000080; font-weight: bold;">$(</span>date +<span style="color: #0000ff;">"%Y%m%d"</span>).sql.gz

<span style="color: #008800; font-style: italic;"># backup wwwroot and mysql</span>
tar -czvf /home/backup/xhjyl_<span style="color: #000080; font-weight: bold;">$(</span>date +%Y%m%d).tar.gz /home/wwwroot --exclude<span style="color: #000000;">=</span>ftp --exclude<span style="color: #000000;">=</span>phpmyadmin
rm <span style="color: #000000;">$OldWWWBackup</span>
rm <span style="color: #000000;">$OldDBBackup</span>
<span style="color: #000000;">cd</span> /home/backup
lftp <span style="color: #000000;">fish://$FTP_UserName:$FTP_PassWord@$FTP_HostName</span> <span style="color: #0000ff;">&lt;&lt; EOF</span>
<span style="color: #0000ff;">cd $FTP_BackupDir</span>
<span style="color: #0000ff;">mrm $OldWWWBackup</span>
<span style="color: #0000ff;">mrm $OldDBBackup</span>
<span style="color: #0000ff;">mput $TodayWWWBackup</span>
<span style="color: #0000ff;">mput $TodayDBBackup</span>
<span style="color: #0000ff;">bye</span>
<span style="color: #0000ff;">EOF
</span></pre>
<p>保存为backup.sh，上传到VPS，并添加755权限，执行。经测试是有效果的。</p>
<p>如果能定时自动备份就更棒了，据说crontab -e，测试了好几遍，没反应，不知道是什么原因。慢慢折腾吧！暂且记录这些。洗洗睡了。</p>
<p>P.s.这些代码在hilau.com也有记录。</p>
<p>P.s.有人说我的博客https在chrome下的那把锁被打上叉叉了，这是因为本站有些js调用来自外链，其中JQ库换成HTTPS已经好了，然后就那些Google广告的代码，不过这些貌似改不了的。</p>
<div id="content-copyright"><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;font-size: 13px;">版权声明: </span><span style="font-size: 13px;">本文采用 <a href="https://hjyl.org/go/aHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLXNhLzMuMC8=" rel="nofollow" target="_blank">BY-NC-SA</a> 协议进行授权，如无注明均为原创，转载请注明转自 <a href="https://hjyl.org">皇家元林</a><br>本文链接: <a rel="bookmark" title="一个空格惹的祸" href="https://hjyl.org/power-of-space/">一个空格惹的祸</a></span></div>]]></content:encoded>
					
					<wfw:commentRss>https://hjyl.org/power-of-space/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
			</item>
	</channel>
</rss>
