Files
DefectingCat.github.io/defect/auto-backup.html
DefectingCat 8c7085f18f
2020-11-02 02:17:54 +00:00

23 lines
18 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="zh-CN" data-default-color-scheme="&#34;auto&#34;"><head><meta charset="UTF-8"><link rel="apple-touch-icon" sizes="76x76" href="/images/img/apple-touch-icon.webp"><link rel="icon" type="image/png" href="/images/img/favicon.webp"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no,shrink-to-fit=no"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="theme-color" content="#9DC8C8"><meta name="description" content=""><meta name="author" content="Defectink"><meta name="keywords" content=""><title>自动备份大法 - 🍭Defectink</title><link rel="stylesheet" href="https://cdn.defectink.com/static/twitter-bootstrap/4.5.3/css/bootstrap.min.css"><link rel="stylesheet" href="https://cdn.defectink.com/static/github-markdown-css/4.0.0/github-markdown.min.css"><link rel="stylesheet" href="/lib/hint/hint.min.css"><link rel="stylesheet" href="https://cdn.defectink.com/static/highlight.js/10.0.0/styles/github-gist.min.css"><link rel="stylesheet" href="//at.alicdn.com/t/font_1749284_ba1fz6golrf.css"><link rel="stylesheet" href="https://cdn.defectink.com/static/t/font_1736178_kmeydafke9r.css"><link rel="stylesheet" href="/css/main.css"><link rel="stylesheet" href="/css/xfy.css"><script src="/js/utils.js"></script><script src="/js/color-schema.js"></script><meta name="generator" content="Hexo 5.2.0"><link rel="alternate" href="/xml/atom.xml" title="🍭Defectink" type="application/atom+xml"><link rel="alternate" href="/xml/rss.xml" title="🍭Defectink" type="application/rss+xml"></head><body><header style="height:75vh"><nav id="navbar" class="navbar fixed-top navbar-expand-lg navbar-dark scrolling-navbar"><div class="container"><a class="navbar-brand" href="/">&nbsp;<strong>🍭Defectink</strong>&nbsp;</a> <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"><div class="animated-icon"><span></span><span></span><span></span></div></button><div class="collapse navbar-collapse" id="navbarSupportedContent"><ul class="navbar-nav ml-auto text-center"><li class="nav-item"><a class="nav-link" href="/">🏠 首页</a></li><li class="nav-item dropdown"><a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">📕 索引</a><div class="dropdown-menu" aria-labelledby="navbarDropdown"><a class="dropdown-item" href="/categories/">🎁 分类</a> <a class="dropdown-item" href="/tags/">🎐 标签</a></div></li><li class="nav-item"><a class="nav-link" href="/archives/">📂 归档</a></li><li class="nav-item"><a class="nav-link" href="/about/">🎃 关于</a></li><li class="nav-item"><a class="nav-link" href="/links/">🙆‍♀️ 小伙伴</a></li><li class="nav-item"><a class="nav-link" href="/pgp/">🔐 PGP</a></li><li class="nav-item" id="search-btn"><a class="nav-link" data-toggle="modal" data-target="#modalSearch">&nbsp;<i class="iconfont icon-search"></i>&nbsp;</a></li><li class="nav-item" id="color-toggle-btn"><a class="nav-link" href="javascript:">&nbsp;<i class="iconfont icon-dark" id="color-toggle-icon"></i>&nbsp;</a></li></ul></div></div></nav><div class="banner intro-2" id="background" parallax="true" style="background:url(/images/img/post.webp) no-repeat center center;background-size:cover"><div class="full-bg-img"><div class="mask flex-center" style="background-color:rgba(0,0,0,.3)"><div class="container page-header text-center fade-in-up"><span class="h2" id="subtitle"></span><div class="mt-3"><span class="post-meta mr-2"><i class="iconfont icon-author" aria-hidden="true"></i> Defectink</span><span class="post-meta"><i class="iconfont icon-date-fill" aria-hidden="true"></i> <time datetime="2019-06-05 16:41" pubdate>2019年6月5日 下午</time></span></div><div class="mt-1"><span class="post-meta mr-2"><i class="iconfont icon-chart"></i> 1.1k 字</span><span class="post-meta mr-2"><i class="iconfont icon-clock-fill"></i> 14 分钟</span></div></div></div></div></div></header><main><div class="container-fluid"><div class="row"><div class="d-none d-lg-block col-lg-2"></div><div class="col-lg-8 nopadding-md"><div class="container nopadding-md" id="board-ctn"><div class="py-5" id="board"><article class="post-content mx-auto" id="post"><h1 style="display:none">自动备份大法</h1><p class="note note-info">本文最后水于2020年11月2日 凌晨</p><div class="markdown-body" id="post-body"><h2 id="引入"><a href="#引入" class="headerlink" title="引入"></a>引入</h2><p>最近看到几个数据爆炸的可怕事件虽然我平时偶尔有手动备份的但还是不怎么放心。以前有用过lsyncd自动同步到其他机器。但昨天发生了一个更可怕的事情我重启机器后发现mysql启动不了apt也不能update了。当时就蒙了后来发现是我的/var目录满了。mysql与apt都需要用到/var目录所以爆炸了。但是为什么会满呢…</p><p>因为一个lsyncd的日志写了34GB。</p><p><img src="../images/%E8%87%AA%E5%8A%A8%E5%A4%87%E4%BB%BD%E5%A4%A7%E6%B3%95/2874899693.webp" srcset="/images/img/loading.gif" alt="1.webp/"></p><h2 id="操作"><a href="#操作" class="headerlink" title="操作"></a>操作</h2><p>放弃lsyncd。</p><p>以前因为懒写过一个自动压缩网页根目录的脚本配合crontab在每天的凌晨自动执行一遍非常不错。</p><p>但是最重要的不是根目录而是数据库。最近有了解到mysqldump表示可以crontab一下。</p><h3 id="dump为sql文件"><a href="#dump为sql文件" class="headerlink" title="dump为sql文件"></a>dump为sql文件</h3><p>导出整个数据库:</p><pre><code class="hljs nginx"><span class="hljs-attribute">mysqldump</span> -u 用户名 -p 数据库名 &gt; 导出的文件名</code></pre><p>例:</p><pre><code class="hljs css"><span class="hljs-selector-tag">mysqldump</span> <span class="hljs-selector-tag">-u</span> <span class="hljs-selector-tag">root</span> <span class="hljs-selector-tag">-p</span> <span class="hljs-selector-tag">typecho</span> &gt; <span class="hljs-selector-tag">typecho_backup</span><span class="hljs-selector-class">.sql</span></code></pre><p>导出一个表</p><pre><code class="hljs nginx"><span class="hljs-attribute">mysqldump</span> -u 用户名 -p 数据库名 表名&gt; 导出的文件名</code></pre><p>例:</p><pre><code class="hljs routeros">mysqldump -u root -p typecho<span class="hljs-built_in"> users </span>&gt; users_backup.sql</code></pre><p>导出一个数据库结构</p><pre><code class="hljs nginx"><span class="hljs-attribute">mysqldump</span> -u 用户名 -p -d 数据库名 &gt; 导出的文件名</code></pre><p>例:</p><pre><code class="hljs css"><span class="hljs-selector-tag">mysqldump</span> <span class="hljs-selector-tag">-u</span> <span class="hljs-selector-tag">root</span> <span class="hljs-selector-tag">-p</span> <span class="hljs-selector-tag">-d</span> <span class="hljs-selector-tag">typecho</span> &gt; <span class="hljs-selector-tag">typecho</span><span class="hljs-selector-class">.sql</span></code></pre><h3 id="导入数据库"><a href="#导入数据库" class="headerlink" title="导入数据库"></a>导入数据库</h3><pre><code class="hljs css"><span class="hljs-selector-tag">mysql</span> <span class="hljs-selector-tag">-u</span> 用户名 <span class="hljs-selector-tag">-p</span> 数据库名 &lt; 数据库名<span class="hljs-selector-class">.sql</span></code></pre><p>例:</p><pre><code class="hljs css"><span class="hljs-selector-tag">mysql</span> <span class="hljs-selector-tag">-u</span> <span class="hljs-selector-tag">root</span> <span class="hljs-selector-tag">-p</span> <span class="hljs-selector-tag">typecho</span> &lt; <span class="hljs-selector-tag">typecho</span><span class="hljs-selector-class">.sql</span></code></pre><p>实际操作了一下,确实很简单方便好用。但问题是,对于我这种勤(lan)快的人肯定要脚本自动一体化啊。</p><h3 id="感觉很厉害的Script"><a href="#感觉很厉害的Script" class="headerlink" title="感觉很厉害的Script"></a>感觉很厉害的Script</h3><p>自我感觉,自我感觉。</p><pre><code class="hljs bash"><span class="hljs-meta">#!/bin/bash</span>
<span class="hljs-comment">#定义数据库信息</span>
USER=<span class="hljs-string">&quot;root&quot;</span>
PASS=<span class="hljs-string">&quot;password&quot;</span>
HOST=<span class="hljs-string">&quot;localhost&quot;</span>
NAME=<span class="hljs-string">&quot;typecho&quot;</span>
NAME2=<span class="hljs-string">&quot;wordpress&quot;</span>
<span class="hljs-comment">#其他信息</span>
BAK_DIR=<span class="hljs-string">&quot;/root/backup/&quot;</span>
TIME=`date +%F`
<span class="hljs-comment">#操作</span>
mysqldump -u<span class="hljs-variable">$USER</span> -p<span class="hljs-variable">$PASS</span> -h<span class="hljs-variable">$HOST</span> <span class="hljs-variable">$NAME</span> &gt; <span class="hljs-variable">$NAME</span><span class="hljs-string">&quot;_&quot;</span><span class="hljs-variable">$TIME</span>.sql
mysqldump -u<span class="hljs-variable">$USER</span> -p<span class="hljs-variable">$PASS</span> -h<span class="hljs-variable">$HOST</span> <span class="hljs-variable">$NAME2</span> &gt; <span class="hljs-variable">$NAME2</span><span class="hljs-string">&quot;_&quot;</span><span class="hljs-variable">$TIME</span>.sql
<span class="hljs-comment">#压缩并移动</span>
<span class="hljs-comment">#tar -zPcvf /root/backup/tar.gz/sql/$NAME&quot;_&quot;$TIME.tar.gz /root/backup/$NAME&quot;_&quot;$TIME.sql</span>
<span class="hljs-comment">#tar -zPcvf /root/backup/tar.gz/sql/$NAME2&quot;_&quot;$TIME.tar.gz /root/backup/$NAME2&quot;_&quot;$TIME.sql</span>
<span class="hljs-comment">#删除多余文件</span>
rm -rf /root/backup/<span class="hljs-variable">$NAME</span><span class="hljs-string">&quot;_&quot;</span><span class="hljs-variable">$TIME</span>.sql /root/backup/<span class="hljs-variable">$NAME2</span><span class="hljs-string">&quot;_&quot;</span><span class="hljs-variable">$TIME</span>.sql
rm -rf /root/<span class="hljs-variable">$NAME</span><span class="hljs-string">&quot;_&quot;</span><span class="hljs-variable">$TIME</span>.sql /root/<span class="hljs-variable">$NAME2</span><span class="hljs-string">&quot;_&quot;</span><span class="hljs-variable">$TIME</span>.sql
<span class="hljs-comment">#删除三天前的数据</span>
find /root/backup/tar.gz/sql -mtime +3 -name <span class="hljs-string">&quot;*.*&quot;</span> -<span class="hljs-built_in">exec</span> rm -rf &#123;&#125; \;</code></pre><p>只要将其放到crontab中并按时间进行执行。就能实现完美的sql备份了。</p><p>再加上以前写过的一些备份其他文件的Shell Script就能实现最基本的收据备份了。并且七牛的云储存有个在Linux上的下载备份脚本。正好给了我不小的帮助。</p><p>虽然喜欢写交互式的脚本但是只要将命令挑出来放crontab就好了</p><h3 id="写入crontab"><a href="#写入crontab" class="headerlink" title="写入crontab"></a>写入crontab</h3><p>先来简单的介绍下可爱的crontab文件的时间格式吧。</p><p><img src="../images/%E8%87%AA%E5%8A%A8%E5%A4%87%E4%BB%BD%E5%A4%A7%E6%B3%95/4160640759.webp" srcset="/images/img/loading.gif" alt="2.webp/"></p><p>星号(*代表所有可能的值例如month字段如果是星号则表示在满足其它字段的制约条件后每月都执行该命令操作。</p><p>逗号(,可以用逗号隔开的值指定一个列表范围例如“1,2,5,7,8,9”</p><p>中杠(-可以用整数之间的中杠表示一个整数范围例如“2-6”表示“2,3,4,5,6”</p><p>正斜线(/可以用正斜线指定时间的间隔频率例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用例如*/10如果用在minute字段表示每十分钟执行一次。</p><p>然后就是写到Crontab里去了。第一次我也是以为直接找到并编辑crontab这个文件的后来才发现原来人家有编辑的命令的</p><pre><code class="hljs ebnf"><span class="hljs-attribute">crontab -e</span></code></pre><p>然后按照格式讲我们的脚本写进去就好了。</p><pre><code class="hljs awk"><span class="hljs-comment"># m h dom mon dow comman</span>
<span class="hljs-number">0</span> <span class="hljs-number">5</span> * * * <span class="hljs-regexp">/bin/</span>sh <span class="hljs-regexp">/root/</span>backup/c.sh
<span class="hljs-number">0</span> <span class="hljs-number">4</span> * * * <span class="hljs-regexp">/bin/</span>sh <span class="hljs-regexp">/root/</span>backup/d.sh</code></pre><h2 id="结尾"><a href="#结尾" class="headerlink" title="结尾"></a>结尾</h2><p>进过超级简单的操作再配合定时任务,就能实现自动化的各种各样的操作了。对于备份这种操作,手动来做的话迟早会累死,就是不累也会感觉到烦。所以将其运用到定时任务上就是非常的人性化了。主要是方便,不需要任何的人工参与。</p><p>对于数据这方面的,还是经常性的备份比较重要。不光光是不本机的备份,也要经常性的实施多机备份。</p></div><hr><div><div class="post-metas mb-3"><div class="post-meta mr-3"><i class="iconfont icon-category"></i> <a class="hover-with-bg" href="/categories/Linux/">Linux</a></div><div class="post-meta"><i class="iconfont icon-tags"></i> <a class="hover-with-bg" href="/tags/Linux/">Linux</a></div></div><p class="note note-warning"><a target="_blank" href="https://zh.wikipedia.org/wiki/Wikipedia:CC_BY-SA_3.0%E5%8D%8F%E8%AE%AE%E6%96%87%E6%9C%AC" rel="nofollow noopener noopener">CC BY-SA 3.0❤</a></p><div class="post-prevnext row"><article class="post-prev col-6"><a href="/defect/public-key-cryptgraphy.html"><i class="iconfont icon-arrowleft"></i> <span class="hidden-mobile">公开密钥密码学🔑</span> <span class="visible-mobile">上一篇</span></a></article><article class="post-next col-6"><a href="/defect/basic-knowledge-of-qinq.html"><span class="hidden-mobile">QinQ基础操作</span> <span class="visible-mobile">下一篇</span><i class="iconfont icon-arrowright"></i></a></article></div></div><article class="comments" id="comments"><div id="vcomments"></div><script type="text/javascript">function loadValine(){addScript("https://cdn.defectink.com/static/valine/1.4.14/Valine.min.js",function(){new Valine({el:"#vcomments",app_id:"dD9t7mcIBVzJWag5ez6GPy2v-MdYXbMMI",app_key:"bWG6pmKsEscrH4JjrpNNAAy6",placeholder:"嘤嘤嘤???",path:window.location.pathname,avatar:"retro",meta:["nick","mail","link"],pageSize:"10",lang:"zh-CN",highlight:!0,recordIP:!1,serverURLs:""})})}waitElementVisible("vcomments",loadValine)</script><noscript>Please enable JavaScript to view the <a target="_blank" href="https://valine.js.org" rel="nofollow noopener noopener">comments powered by Valine.</a></noscript></article></article></div></div></div><div class="d-none d-lg-block col-lg-2 toc-container" id="toc-ctn"><div id="toc"><p class="toc-header"><i class="iconfont icon-list"></i>&nbsp;目录</p><div id="tocbot"></div></div></div></div></div></main><a id="scroll-top-button" href="#" role="button"><i class="iconfont icon-arrowup" aria-hidden="true"></i></a><div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel" aria-hidden="true"><div class="modal-dialog modal-dialog-scrollable modal-lg" role="document"><div class="modal-content"><div class="modal-header text-center"><h4 class="modal-title w-100 font-weight-bold">搜索</h4><button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button></div><div class="modal-body mx-3"><div class="md-form mb-5"><input type="text" id="local-search-input" class="form-control validate"> <label data-error="x" data-success="v" for="local-search-input">关键词</label></div><div class="list-group" id="local-search-result"></div></div></div></div></div><footer class="text-center mt-5 py-3"><div class="footer-content"><a href="https://hexo.io" target="_blank" rel="nofollow noopener"><span>Hexo</span></a><i class="iconfont icon-love"></i> <a href="https://github.com/fluid-dev/hexo-theme-fluid" target="_blank" rel="nofollow noopener"><span>Fluid</span></a></div><div class="beian"><a href="http://beian.miit.gov.cn/" target="_blank" rel="nofollow noopener">皖ICP备17017808号</a></div></footer><script src="https://cdn.defectink.com/static/jquery/3.4.1/jquery.min.js"></script><script src="https://cdn.defectink.com/static/twitter-bootstrap/4.5.3/js/bootstrap.min.js"></script><script src="/js/debouncer.js"></script><script src="/js/main.js"></script><script src="/js/lazyload.js"></script><script defer="defer" src="https://cdn.defectink.com/static/clipboard.js/2.0.6/clipboard.min.js"></script><script src="/js/clipboard-use.js"></script><script src="/js/xfy.js"></script><script src="https://cdn.defectink.com/static/tocbot/4.11.1/tocbot.min.js"></script><script>$(document).ready(function(){var t=$("#board-ctn").offset().top;tocbot.init({tocSelector:"#tocbot",contentSelector:"#post-body",headingSelector:"h1,h2,h3,h4,h5,h6",linkClass:"tocbot-link",activeLinkClass:"tocbot-active-link",listClass:"tocbot-list",isCollapsedClass:"tocbot-is-collapsed",collapsibleClass:"tocbot-is-collapsible",collapseDepth:3,scrollSmooth:!0,headingsOffset:-t}),0<$(".toc-list-item").length&&$("#toc").css("visibility","visible")})</script><script src="https://cdn.defectink.com/static/typed.js/2.0.11/typed.min.js"></script><script>var typed=new Typed("#subtitle",{strings:[" ","自动备份大法&nbsp;"],cursorChar:"❤",typeSpeed:70,loop:!1});typed.stop(),$(document).ready(function(){$(".typed-cursor").addClass("h2"),typed.start()})</script><script src="/js/local-search.js"></script><script>var path="/xml/local-search.xml",inputArea=document.querySelector("#local-search-input");inputArea.onclick=function(){searchFunc(path,"local-search-input","local-search-result"),this.onclick=null}</script><script src="https://cdn.defectink.com/static/fancybox/3.5.7/jquery.fancybox.min.js"></script><link rel="stylesheet" href="https://cdn.defectink.com/static/fancybox/3.5.7/jquery.fancybox.min.css"><script>$("#post img:not(.no-zoom img, img[no-zoom]), img[zoom]").each(function(){var t=document.createElement("a");$(t).attr("data-fancybox","images"),$(t).attr("href",$(this).attr("src")),$(this).wrap(t)})</script><script src="https://cdn.defectink.com/static/mermaid/8.5.0/mermaid.min.js"></script><script>window.mermaid&&mermaid.initialize({theme:"default"})</script></body></html>