You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

509 lines
17 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!doctype html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="author" content="Lednerb">
<meta name="description" content="Bilberry Premium Theme for Hugo.">
<meta name="keywords" content="blog,personal,responsive,search,font awesome,pages,posts,multilingual,highlight.js,syntax highlighting,premium,shortcuts">
<meta name="generator" content="Hugo 0.50" />
<title> [筆記]在KVM VPS上透過 fuse-sshfs &#43; pdumpfs 做wordpress異地備援 | My cool new Blog</title>
<meta name="description" content="[筆記]在KVM VPS上透過 fuse-sshfs &#43; pdumpfs 做wordpress異地備援 - Bilberry Premium Theme for Hugo.">
<meta itemprop="name" content="[筆記]在KVM VPS上透過 fuse-sshfs &#43; pdumpfs 做wordpress異地備援">
<meta itemprop="description" content="[筆記]在KVM VPS上透過 fuse-sshfs &#43; pdumpfs 做wordpress異地備援 - Bilberry Premium Theme for Hugo.">
<meta property="og:title" content="[筆記]在KVM VPS上透過 fuse-sshfs &#43; pdumpfs 做wordpress異地備援">
<meta property="og:description" content="[筆記]在KVM VPS上透過 fuse-sshfs &#43; pdumpfs 做wordpress異地備援 - Bilberry Premium Theme for Hugo.">
<meta property="og:image" content="https://www.gravatar.com/avatar/88188b6cc451928eba90e8400bc68086?size=200">
<meta property="og:url" content="https://h.cowbay.org/article/e7-ad-86-e8-a8-98-e5-9c-a8kvm-vps-e4-b8-8a-e9-80-8f-e9-81-8e-fuse-sshfs-pdumpfs-e5-81-9a-e7-95-b0-e5-9c-b0-e5-82-99-e6-8f-b4/">
<meta property="og:site_name" content="My cool new Blog">
<meta property="og:type" content="article">
<link rel="icon" type="image/png" href="https://h.cowbay.org/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://h.cowbay.org/favicon-16x16.png" sizes="16x16">
<link rel="stylesheet" href="https://h.cowbay.org/sass/combined.min.717098cb5503581e75f12e486a847ca410bf8367d4d8713f4c37affc868c5a1d.css">
</head>
<body class="bilberry-hugo-theme">
<nav>
<div class="container">
<ul class="topnav">
<li><a href="/page/about-bilberry/">About Bilberry</a></li>
<li><a href="https://github.com/Lednerb/bilberry-hugo-theme" target="_blank">Github</a></li>
</ul>
<div id="search-box" class="search">
<i class="fa fa-search"></i>
<input id="search" type="text" placeholder="Search ...">
</div>
</div>
</nav>
<header>
<div class="container">
<div class="logo">
<a href="/" class="logo">
<img src="https://www.gravatar.com/avatar/88188b6cc451928eba90e8400bc68086?d=mm&size=200" alt="">
<span class="overlay"><i class="fa fa-home"></i></span>
</a>
</div>
<div class="titles">
<h3 class="title"><a href="/">My cool new Blog</a></h3>
<span class="subtitle">Hello World! This is the most epic subtitle ever.</span>
</div>
<div class="languages">
<a href="/en" class="active">en</a>
<a href="/de">de</a>
</div>
<div class="toggler">
<i class="fa fa-bars" aria-hidden="true"></i>
</div>
</div>
</header>
<div class="main container">
<div class="article-wrapper u-cf single">
<a class="bubble" href="/article/e7-ad-86-e8-a8-98-e5-9c-a8kvm-vps-e4-b8-8a-e9-80-8f-e9-81-8e-fuse-sshfs-pdumpfs-e5-81-9a-e7-95-b0-e5-9c-b0-e5-82-99-e6-8f-b4/">
<i class="fa fa-fw fa-pencil"></i>
</a>
<article class="default article">
<div class="content">
<h3><a href="/article/e7-ad-86-e8-a8-98-e5-9c-a8kvm-vps-e4-b8-8a-e9-80-8f-e9-81-8e-fuse-sshfs-pdumpfs-e5-81-9a-e7-95-b0-e5-9c-b0-e5-82-99-e6-8f-b4/">[筆記]在KVM VPS上透過 fuse-sshfs &#43; pdumpfs 做wordpress異地備援</a></h3>
<div class="meta">
<span class="date moment">2013-03-22</span>
<span class="categories">
<a href="/categories/%E5%B7%A5%E4%BD%9C%E7%AD%86%E8%A8%98">工作筆記</a>
</span>
</div>
<p>因為之前手賤把原有的BLOG的資料檔都砍光光雖然文章內容都還留著但是圖片都變成叉燒包了 <img src="http://www.cowbay.org/wp-content/plugins/ultimate-tinymce/addons/emotions/img/popobig/too_sad.png" alt="Too Sad" title="Too Sad" /></p>
<p>不過換到新的WP之後發現多了好多布景主題可以用現在用的這個我就覺得很棒<img src="http://www.cowbay.org/wp-content/plugins/ultimate-tinymce/addons/emotions/img/popobig/big_smile.png" alt="Big Smile" title="Big Smile" /></p>
<p>也為了要避免再次發生之前手殘的錯誤,所以一直在找一些異地備援的方式。</p>
<p>Wordpress本身的外掛雖然有很多號稱可以透過FTP之類的方式把備份檔案丟去其他地方</p>
<p>但測試了幾個之後,發現要不就是沒有定時的功能,要不就是要額外收費。</p>
<p>想來想去還是乾脆自己在console下備份比較能掌握。</p>
<p>之前有玩過lsync這次改用另外一招 sshfs + pdumpfs 來作作看</p>
<p></p>
<p>一開始在這台主機上要安裝fuse-sshfs 就碰到了很多問題yum沒有預設要另外下載COMPILE又發生沒compiler的狀況一一排除後卻出現一個無解的問題。
&gt; fuse: failed to open /dev/fuse: <em>Permission denied</em>
翻了GOOGLE大部分的解法都是把執行的帳號加入fuse群組</p>
<p>問題是,我是用 root  執行,不應該會有這種權限的錯誤才對</p>
<p>最後發現是因為openvz的VPS的關係所以不能在這台去執行..<img src="http://www.cowbay.org/wp-content/plugins/ultimate-tinymce/addons/emotions/img/popobig/tired.png" alt="So Tired" title="So Tired" /></p>
<p>好吧反正我是要異地備援那我去另一台KVM的VPS安裝總可以了吧</p>
<p>安裝過程就跟其他用yum安裝的軟體一樣(yum 真是好用!以前都還要自己解相依性的問題..)
&gt; yum install -y pdumpfs fuse-sshfs
接著在remote 端建立備份用的目錄還有mount用的目錄
&gt; mkdir /usr/local/abc_backup
&gt;
&gt;
&gt; mkdir /abc_backup
然後先把remote 端的目錄結構用sshfs mount 到/abc_backup
&gt; sshfs abc@abc.com:/ /abc_backup/ -p 222
這樣的指令會要求輸入密碼,要怎麼把密碼放進去,還要再研究。</p>
<p>好了之後就看一下是不是有沒有正確掛載
&gt; ls -la /abc_backup
正常的話應該就會看到remote端的目錄結構了</p>
<p>接下來換pdumpfs 上場</p>
<p>pdumpfs的介紹可以看官網 <a href="http://0xcc.net/pdumpfs/index.html.en">http://0xcc.net/pdumpfs/index.html.en</a></p>
<p>簡單說就是rsync搭配time stamp + hard link 做到差異備份這樣</p>
<p>指令也很簡單
&gt; pdumpfs /abc_backup /usr/local/abc_backup
一行就搞定了!</p>
<p>pdumpfs 可用的參數如下,真的很簡單!
&gt; Usage: pdumpfs SRC DEST [BASE]
&gt;
&gt; -e, &ndash;exclude=PATTERN exclude files/directories matching PATTERN
&gt;
&gt; -s, &ndash;exclude-by-size=SIZE exclude files larger than SIZE
&gt;
&gt; -w, &ndash;exclude-by-glob=GLOB exclude files matching GLOB
&gt;
&gt; -l, &ndash;log-file=FILE write a log to FILE
&gt;
&gt; -v, &ndash;version print version information and exit
&gt;
&gt; -q, &ndash;quiet suppress all normal output
&gt;
&gt; -n, &ndash;dry-run don&rsquo;t actually run any commands
&gt;
&gt; -h, &ndash;help show this help message
沒信心的話,可以用 -n 試跑一次看看</p>
<p>確定之後再寫到crontab裡面去</p>
<p>簡單整理步驟如下</p>
<p>1.在要備份的機器上先寫好mysql dump的crontab大概長這樣記得要自己加入日期參數之類的
&gt; mysqladmin -uroot -pxxxxx wordpress &gt; /123/wp.sql
2.在備份目的的機器上安裝sshfs / pdumpfs</p>
<p>3.在備份目的機器上,建立掛載用的目錄/abc 還有備份用的目錄/usr/local/backup/abc</p>
<p>4.用sshfs掛載遠端目錄到/abc</p>
<p>5.用pdumpfs 把掛載進來的遠端目錄底下的 /123/wp.sql 還有 /var/www/html/wp 都備份到 /usr/local/backup/abc</p>
<p>6.測試完成後在備份目的機器上寫入crontab</p>
<p>大功告成!</p>
<p>我這兩個國外的VPS在互連平均速率幾乎都在4Mb/5Mb ,拋資料真的很快!</p>
<p>&nbsp;</p>
</div>
<div class="footer">
<div class="tags">
<i class="fa fa-tags"></i>
<div class="links">
<a href="/tags/centos">centos</a>
<a href="/tags/openvz">openvz</a>
<a href="/tags/pdumpfs">pdumpfs</a>
<a href="/tags/sshfs">sshfs</a>
<a href="/tags/vps">vps</a>
<a href="/tags/wordpress">wordpress</a>
<a href="/tags/%E7%95%B0%E5%9C%B0%E5%82%99%E6%8F%B4">異地備援</a>
</div>
</div>
</div>
</article>
</div>
<div id="disqus_thread"></div>
<script type="application/javascript">
var disqus_config = function () {
};
(function() {
if (["localhost", "127.0.0.1"].indexOf(window.location.hostname) != -1) {
document.getElementById('disqus_thread').innerHTML = 'Disqus comments not available by default when the website is previewed locally.';
return;
}
var d = document, s = d.createElement('script'); s.async = true;
s.src = '//' + "bilberry-hugo-theme" + '.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
</div>
<footer>
<div class="container">
<div class="recent-posts">
<strong>Latest posts</strong>
<ul>
<li>
<a href="/article/google-550-5-7-1-sloution/">寄信給google被退信 錯誤 550-5.7.1的解法</a>
</li>
<li>
<a href="/article/netdata-linux-system-performance-monitor-dashboard/">Netdata Linux System Performance Monitor Dashboard</a>
</li>
<li>
<a href="/article/linux-performance-monitor-dashboard-netdata-md/">Linux 底下極其詳細的System performace Monitor Dashboard - Netdata</a>
</li>
<li>
<a href="/article/syntax-test/">Syntax Test</a>
</li>
<li>
<a href="/article/psql-create-role-and-assign-priviledges/">psql create role and assign priviledges</a>
</li>
<li>
<a href="/article/study-url/">Study URL</a>
</li>
<li>
<a href="/article/rsync-time-backup/">[筆記] Linux 底下好用的備份工具 rsync-time-backup</a>
</li>
</ul>
</div>
<div class="categories">
<a href="/categories/"><strong>Categories</strong></a>
<ul>
<li>
<a href="/categories/%E6%9C%AA%E5%88%86%E9%A1%9E">未分類 (86)</a>
</li>
<li>
<a href="/categories/%E5%B7%A5%E4%BD%9C%E7%AD%86%E8%A8%98">工作筆記 (68)</a>
</li>
<li>
<a href="/categories/%E5%85%B6%E4%BB%96">其他 (46)</a>
</li>
<li>
<a href="/categories/%E7%AD%86%E8%A8%98">筆記 (30)</a>
</li>
<li>
<a href="/categories/%E5%89%AA%E5%A0%B1">剪報 (18)</a>
</li>
<li>
<a href="/categories/starting">Starting (5)</a>
</li>
<li>
<a href="/categories/blog">Blog (4)</a>
</li>
</ul>
</div>
<div class="right">
<div class="external-profiles">
<strong>Social media</strong>
<a href="https://twitter.com/TheRealLednerb" target="_blank"><i class="fa fa-twitter-adblock-proof"></i></a>
<a href="https://github.com/Lednerb" target="_blank"><i class="fa fa-github"></i></a>
</div>
<div class="languages">
<strong>Other languages</strong>
<a href="/en" class="active">en</a>
<a href="/de">de</a>
</div>
</div>
</div>
</footer>
<div class="credits">
<div class="container">
<div class="copyright">
<a href="https://github.com/Lednerb" target="_blank">
&copy;
2017
by Lednerb
</a>
</div>
<div class="author">
<a href="https://github.com/Lednerb/bilberry-hugo-theme" target="_blank">Bilberry Hugo Theme</a>
</div>
</div>
</div>
<script type="text/javascript" src="https://h.cowbay.org/js/externalDependencies.39c47e10e241eae2947b3fe21809c572.js" integrity="md5-OcR&#43;EOJB6uKUez/iGAnFcg=="></script>
<script type="text/javascript" src="https://h.cowbay.org/js/theme.ff50ae6dc1bfc220b23bf69dbb41b54e.js" integrity="md5-/1CubcG/wiCyO/adu0G1Tg=="></script>
<script>
$(".moment").each(function() {
$(this).text(
moment( $(this).text() )
.locale( "en" )
.format('LL')
);
});
$(".footnote-return sup").html("");
</script>
<script>
var client = algoliasearch("Y2C4RWMPXW", "50ea7f8c41c0ad233926e0be2b769ed1");
var index = client.initIndex("default-content");
$('#search').autocomplete({ hint: false, autoselect: true, debug: false },
[
{
source: $.fn.autocomplete.sources.hits(index, { hitsPerPage: 5, filters: 'language: en' }),
displayKey: function(suggestion) {
return suggestion.title || suggestion.author
},
templates: {
suggestion: function(suggestion) {
return "<span class='entry " + suggestion.type + "'>"
+ "<span class='title'>" + suggestion.title + "</span>"
+ "<span class='fa fa-fw " + suggestion.iconClass + "'></span>"
+ "</span>"
;
},
empty: function() {
return "<span class='empty'>Nothing found.</span>"
},
footer: function() {
return '<div class="branding">Powered by <img src="https:\/\/h.cowbay.org\/dist\/algolia-logo-light.svg" /></div>'
}
},
}
])
.on('autocomplete:selected', function(event, suggestion, dataset) {
window.location = (suggestion.url);
})
.keypress(function (event, suggestion) {
if (event.which == 13) {
window.location = (suggestion.url);
}
});
</script>
</body>
</html>