Incremental file and MySQL backup

<h2 id=1-install>1. Install</h2><p>Install autorestic: <a href=https://autorestic.vercel.app/installation target=_blank rel=noopener>https://autorestic.vercel.app/installation</a></p><p>Let&rsquo;s use <code>/root/backup</code> to store our env file and autorestic config, make a <code>data</code> folder inside to store the actual backups inside, and a temporary <code>database</code> folder for MySQL dumps.</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-environment>2. Environment</h2><p>Create the environment file <code>nano .autorestic.env</code> and fill the access data to the database:</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>Generate a unique key / password in <code>AUTORESTIC_LOCAL_RESTIC_PASSWORD</code>. This is used to encrypt and decrypt all backups. Also please save backup this key in a different location as well (password manager or something).</p><h2 id=3-mysql-backup>3. MySQL Backup</h2><p>Make a bash script for MySQL backup: <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>(credits to <a href=https://gist.github.com/jeremyharris/3085738 target=_blank rel=noopener>jeremyharris/backup.sh</a> for separate db tables script)</p><h2 id=4-config>4. Config</h2><p>Make a config file: <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># where you want to store all backups</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># where the website files are</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># at 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># or &#34;prune&#34;. Yes must be in quotes, otherwise it&#39;s a 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># at 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>Note: The backend name must match with the env restic password name: (like <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-initialize-repository>5. Initialize repository</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 check </span></span></code></pre></div><p>This will check your config and initialize a new repository in the backup destination folder or remote location.</p><h2 id=6-cron-job>6. Cron Job</h2><p>Add the cron job. autorestic recommends every 5 minutes.</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=notes>Notes:</h3><ul><li><strong>Backup your key</strong> (env RESTIC_PASSWORD) somewhere else (like a password manager). If you lose it, <strong>your backups are useless</strong>.</li><li>Use <code>autorestic exec -av snapshots</code> while in the <code>/root/backup</code> folder to see the list of backups.</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>## list of backups</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>## choose one snapshot id, then list all the files within it</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>## now you can choose to restore only one file for example, in the relative folder ./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>Last modified on 2024-11-18</p>