Backup incremental pentru fișiere și MySQL

<h2 id=1-instalează>1. Instalează</h2><p>Instalează autorestic de aici: <a href=https://autorestic.vercel.app/installation target=_blank rel=noopener>https://autorestic.vercel.app/installation</a></p><p>În tutorialul ăsta folosim următoarea structură de fișiere: <code>/root/backup</code> pentru parole și configurația autorestic, un folder <code>data</code> înauntru unde se salvează backup-urile efective (restic repository), și folderul database unde se salvează temporar exportul din baza de date.</p><div class=highlight><pre tabindex=0 style=color:#d0d0d0;background-color:#202020;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">1</span><span>mkdir /root/backup </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">2</span><span>mkdir /root/backup/data </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">3</span><span>mkdir /root/backup/database </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">4</span><span><span style=color:#24909d>cd</span> /root/backup </span></span></code></pre></div><h2 id=2-fisier-env-pentru-parole>2. Fisier env pentru parole</h2><p>Creează fisierul environment <code>nano .autorestic.env</code> și completează datele de access la baza de date:</p><div class=highlight><pre tabindex=0 style=color:#d0d0d0;background-color:#202020;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-env data-lang=env><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">1</span><span><span style=color:#40ffff>AUTORESTIC_LOCAL_RESTIC_PASSWORD</span>= </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">2</span><span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">3</span><span><span style=color:#40ffff>AUTORESTIC_PROD_DB_MYSQL_HOST</span>=localhost </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">4</span><span><span style=color:#40ffff>AUTORESTIC_PROD_DB_MYSQL_PORT</span>=<span style=color:#3677a9>3306</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">5</span><span><span style=color:#40ffff>AUTORESTIC_PROD_DB_MYSQL_DATABASE</span>= </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">6</span><span><span style=color:#40ffff>AUTORESTIC_PROD_DB_MYSQL_USER</span>= </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">7</span><span><span style=color:#40ffff>AUTORESTIC_PROD_DB_MYSQL_PASS</span>= </span></span></code></pre></div><p>Completează la <code>AUTORESTIC_LOCAL_RESTIC_PASSWORD</code> o cheie/parolă random generată. Cu parola asta o să fie encriptate toate backup-urile. Salvează această cheie în alt loc (password manager sau în alt fișier undeva sigur).</p><h2 id=3-script-pentru-mysql-backup>3. Script pentru MySQL backup</h2><p>Creeaza scriptul bash pentru backup MySQL: <code>nano backup-db-hook.sh</code></p><div class=highlight><pre tabindex=0 style=color:#d0d0d0;background-color:#202020;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 1</span><span><span style=color:#cd2828;font-weight:700>#!/usr/bin/bash </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 2</span><span><span style=color:#cd2828;font-weight:700></span><span style=color:#40ffff>BACKUP_PATH</span>=./database </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 3</span><span>mkdir <span style=color:#40ffff>$BACKUP_PATH</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 4</span><span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 5</span><span><span style=color:#24909d>export</span> <span style=color:#6ab825;font-weight:700>$(</span>cat .autorestic.env | xargs<span style=color:#6ab825;font-weight:700>)</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 6</span><span><span style=color:#40ffff>MYSQL</span>=<span style=color:#ed9d13>&#34;</span><span style=color:#6ab825;font-weight:700>$(</span>which mysql<span style=color:#6ab825;font-weight:700>)</span><span style=color:#ed9d13>&#34;</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 7</span><span><span style=color:#40ffff>MYSQLDUMP</span>=<span style=color:#ed9d13>&#34;</span><span style=color:#6ab825;font-weight:700>$(</span>which mysqldump<span style=color:#6ab825;font-weight:700>)</span><span style=color:#ed9d13>&#34;</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 8</span><span><span style=color:#40ffff>GZIP</span>=<span style=color:#ed9d13>&#34;</span><span style=color:#6ab825;font-weight:700>$(</span>which gzip<span style=color:#6ab825;font-weight:700>)</span><span style=color:#ed9d13>&#34;</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 9</span><span><span style=color:#40ffff>MYSQL_PERMS</span>=<span style=color:#ed9d13>&#34; --protocol tcp &#34;</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">10</span><span><span style=color:#40ffff>MYSQL_PERMS</span>+=<span style=color:#ed9d13>&#34; -h </span><span style=color:#6ab825;font-weight:700>$(</span><span style=color:#24909d>echo</span> <span style=color:#40ffff>$AUTORESTIC_PROD_DB_MYSQL_HOST</span><span style=color:#6ab825;font-weight:700>)</span><span style=color:#ed9d13> &#34;</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">11</span><span><span style=color:#40ffff>MYSQL_PERMS</span>+=<span style=color:#ed9d13>&#34; -P </span><span style=color:#6ab825;font-weight:700>$(</span><span style=color:#24909d>echo</span> <span style=color:#40ffff>$AUTORESTIC_PROD_DB_MYSQL_PORT</span><span style=color:#6ab825;font-weight:700>)</span><span style=color:#ed9d13> &#34;</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">12</span><span><span style=color:#40ffff>MYSQL_PERMS</span>+=<span style=color:#ed9d13>&#34; -u </span><span style=color:#6ab825;font-weight:700>$(</span><span style=color:#24909d>echo</span> <span style=color:#40ffff>$AUTORESTIC_PROD_DB_MYSQL_USER</span><span style=color:#6ab825;font-weight:700>)</span><span style=color:#ed9d13> &#34;</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">13</span><span><span style=color:#40ffff>DB</span>=<span style=color:#ed9d13>&#34;</span><span style=color:#40ffff>$AUTORESTIC_PROD_DB_MYSQL_DATABASE</span><span style=color:#ed9d13>&#34;</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">14</span><span><span style=color:#24909d>export</span> <span style=color:#40ffff>MYSQL_PWD</span>=<span style=color:#ed9d13>&#34;</span><span style=color:#40ffff>$AUTORESTIC_PROD_DB_MYSQL_PASS</span><span style=color:#ed9d13>&#34;</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">15</span><span><span style=color:#40ffff>DUMP_OPTIONS</span>=<span style=color:#ed9d13>&#34;--single-transaction --no-tablespaces&#34;</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">16</span><span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">17</span><span><span style=color:#24909d>echo</span> <span style=color:#ed9d13>&#34;</span><span style=color:#6ab825;font-weight:700>$(</span>date +<span style=color:#ed9d13>&#34;%d-%m-%Y %H:%M:%S&#34;</span><span style=color:#6ab825;font-weight:700>)</span><span style=color:#ed9d13> Backing up </span><span style=color:#40ffff>$DB</span><span style=color:#ed9d13> to </span><span style=color:#40ffff>$BACKUP_PATH</span><span style=color:#ed9d13>&#34;</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">18</span><span><span style=color:#40ffff>TABLES</span>=<span style=color:#ed9d13>&#34;</span><span style=color:#6ab825;font-weight:700>$(</span><span style=color:#40ffff>$MYSQL</span> <span style=color:#40ffff>$MYSQL_PERMS</span> <span style=color:#40ffff>$DB</span> -Bse <span style=color:#ed9d13>&#39;SHOW TABLES FROM &#39;</span><span style=color:#40ffff>$DB</span><span style=color:#6ab825;font-weight:700>)</span><span style=color:#ed9d13>&#34;</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">19</span><span><span style=color:#6ab825;font-weight:700>for</span> TABLE in <span style=color:#40ffff>$TABLES</span> ; <span style=color:#6ab825;font-weight:700>do</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">20</span><span> <span style=color:#24909d>echo</span> <span style=color:#ed9d13>&#34;</span><span style=color:#6ab825;font-weight:700>$(</span>date +<span style=color:#ed9d13>&#34;%d-%m-%Y %H:%M:%S&#34;</span><span style=color:#6ab825;font-weight:700>)</span><span style=color:#ed9d13> Backing up </span><span style=color:#40ffff>$TABLE</span><span style=color:#ed9d13>&#34;</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">21</span><span> <span style=color:#40ffff>FILE</span>=<span style=color:#ed9d13>&#34;</span><span style=color:#40ffff>$BACKUP_PATH</span><span style=color:#ed9d13>/</span><span style=color:#ed9d13>${</span><span style=color:#40ffff>TABLE</span><span style=color:#ed9d13>}</span><span style=color:#ed9d13>.sql.gz&#34;</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">22</span><span> <span style=color:#40ffff>$MYSQLDUMP</span> <span style=color:#40ffff>$MYSQL_PERMS</span> <span style=color:#40ffff>$DUMP_OPTIONS</span> <span style=color:#40ffff>$DB</span> <span style=color:#40ffff>$TABLE</span> | <span style=color:#40ffff>$GZIP</span> -9 &gt; <span style=color:#40ffff>$FILE</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">23</span><span><span style=color:#6ab825;font-weight:700>done</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">24</span><span><span style=color:#24909d>echo</span> <span style=color:#ed9d13>&#34;</span><span style=color:#6ab825;font-weight:700>$(</span>date +<span style=color:#ed9d13>&#34;%d-%m-%Y %H:%M:%S&#34;</span><span style=color:#6ab825;font-weight:700>)</span><span style=color:#ed9d13> ...done!&#34;</span> </span></span></code></pre></div><p>(script de backup în fișiere separate pentru tabele copiat de la <a href=https://gist.github.com/jeremyharris/3085738 target=_blank rel=noopener>jeremyharris/backup.sh</a> )</p><h2 id=4-configurație-autorestic>4. Configurație Autorestic</h2><p>Creează fișierul config pentru autorestic: <code>nano auto.yml</code></p><div class=highlight><pre tabindex=0 style=color:#d0d0d0;background-color:#202020;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-yml data-lang=yml><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 1</span><span><span style=color:#6ab825;font-weight:700>version</span>:<span style=color:#666> </span><span style=color:#3677a9>2</span><span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 2</span><span><span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 3</span><span><span style=color:#666></span><span style=color:#6ab825;font-weight:700>backends</span>:<span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 4</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>local</span>:<span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 5</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>type</span>:<span style=color:#666> </span>local<span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 6</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>path</span>:<span style=color:#666> </span>/root/backup/data<span style=color:#666> </span><span style=color:#999;font-style:italic># aici se salveaza backup-urile in sine</span><span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 7</span><span><span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 8</span><span><span style=color:#666></span><span style=color:#6ab825;font-weight:700>global</span>:<span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 9</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>forget</span>:<span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">10</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>keep-daily</span>:<span style=color:#666> </span><span style=color:#3677a9>7</span><span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">11</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>keep-weekly</span>:<span style=color:#666> </span><span style=color:#3677a9>4</span><span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">12</span><span><span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">13</span><span><span style=color:#666></span><span style=color:#6ab825;font-weight:700>locations</span>:<span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">14</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>prod</span>:<span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">15</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>from</span>:<span style=color:#666> </span>/var/www/html<span style=color:#666> </span><span style=color:#999;font-style:italic># calea catre fisierele site</span><span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">16</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>to</span>:<span style=color:#666> </span>local<span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">17</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>cron</span>:<span style=color:#666> </span><span style=color:#ed9d13>&#39;0 1 * * *&#39;</span><span style=color:#666> </span><span style=color:#999;font-style:italic># backup fisiere la ora 01:00</span><span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">18</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>forget</span>:<span style=color:#666> </span><span style=color:#ed9d13>&#34;yes&#34;</span><span style=color:#666> </span><span style=color:#999;font-style:italic># sau &#34;prune&#34;. Optiunea &#34;Yes&#34; trebuie să fie în ghilimele, altfel este boolean</span><span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">19</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>options</span>:<span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">20</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>backup</span>:<span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">21</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>exclude</span>:<span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">22</span><span><span style=color:#666> </span>- <span style=color:#ed9d13>&#39;vendor&#39;</span><span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">23</span><span><span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">24</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>prod-db</span>:<span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">25</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>from</span>:<span style=color:#666> </span>/root/backup/database/<span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">26</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>to</span>:<span style=color:#666> </span>local<span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">27</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>cron</span>:<span style=color:#666> </span><span style=color:#ed9d13>&#39;0 0 * * *&#39;</span><span style=color:#666> </span><span style=color:#999;font-style:italic># backup baza de date la ora 00:00</span><span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">28</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>forget</span>:<span style=color:#666> </span><span style=color:#ed9d13>&#34;yes&#34;</span><span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">29</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>hooks</span>:<span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">30</span><span><span style=color:#666> </span><span style=color:#6ab825;font-weight:700>before</span>:<span style=color:#666> </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">31</span><span><span style=color:#666> </span>- bash backup-db-hook.sh<span style=color:#666> </span></span></span></code></pre></div><blockquote><p>Notă: Numele backend-ului trebuie să fie la fel ca în numele cheii din env: (cum e <code><b>EXAMPLE</b></code>)<br>AUTORESTIC_<code><b>EXAMPLE</b></code>_RESTIC_PASSWORD=<br>backends:<br>  <code><b>example</b></code>:<br>    type: local</p></blockquote><h2 id=5-inițializează-folderul-cu-comanda>5. Inițializează folderul cu comanda</h2><div class=highlight><pre tabindex=0 style=color:#d0d0d0;background-color:#202020;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">1</span><span>autorestic -c auto.yml -v check </span></span></code></pre></div><p>Comanda asta validează configurația și inițiază un nou repository in folderul destinație.</p><h2 id=6-cron-job>6. Cron Job</h2><p>Adaugă cron job ca să facă automat backup și purge. Autorestic recomandă cron jobul să fie setat la 5 minute.</p><p><code>crontab -e</code></p><div class=highlight><pre tabindex=0 style=color:#d0d0d0;background-color:#202020;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">1</span><span>*/5 * * * * <span style=color:#24909d>cd</span> /root/backup; /usr/local/bin/autorestic -c /root/backup/auto.yml --ci cron --lean </span></span></code></pre></div><hr><h3 id=note>Note:</h3><ul><li><strong>Salvează cheia</strong> (<code>RESTIC_PASSWORD</code> din env) undeva extern, în afara serverului, într-un password manager sau ceva similar. Dacă pierzi cheia backup-urile sunt inutile, nu le poți decripta.</li><li>Ca să vezi lista de backup-uri intră în folderul <code>/root/backup</code> și scrie comanda <code>autorestic exec -av snapshots</code></li></ul><div class=highlight><pre tabindex=0 style=color:#d0d0d0;background-color:#202020;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">1</span><span><span style=color:#999;font-style:italic>## lista backup-urilor</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">2</span><span>autorestic -c auto.yml <span style=color:#24909d>exec</span> -av snapshots </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">3</span><span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">4</span><span><span style=color:#999;font-style:italic>## alege un snapshot id, afișează toate fișierele din acesta</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">5</span><span>autorestic -c auto.yml <span style=color:#24909d>exec</span> -av -- ls --long 041c88da </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">6</span><span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">7</span><span><span style=color:#999;font-style:italic>## acum poți alege să restaurezi doar un fișier, de exemplu, in folderul ./restore/</span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">8</span><span>autorestic -c auto.yml <span style=color:#24909d>exec</span> -av -- restore --target=./restore/ --include=/root/backup/database/example.sql.gz 041c88da </span></span></code></pre></div><hr width=100% id=EOF><p style=color:#777>Ultima modificare la 2024-11-18</p>