<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Syncthing on Crimideias do caioau</title>
    <link>https://caioau.net/tags/syncthing/</link>
    <description>Recent content in Syncthing on Crimideias do caioau</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>pt-br</language>
    <copyright>🄯 Copyleft: licensed under a CC BY-NC-SA 4.0 licence</copyright>
    <lastBuildDate>Sat, 12 Sep 2020 18:00:00 -0300</lastBuildDate><atom:link href="https://caioau.net/tags/syncthing/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Como parei de me preocupar e passei a adorar minha solução de backups</title>
      <link>https://caioau.net/blog/backups/</link><category>backup</category>
		  <category>syncthing</category>
		  <category>borgbackup</category>
		  <category>raspberry-pi</category>
		  <category>selfhost</category>
		  <category>healthchecks.io</category>
		  <category>rclone</category>
		  <category>qubesos</category>
		  <category>texto</category>
		  <category>linux</category>
		  <category>monitoramento</category>
		  
      <pubDate>Sat, 12 Sep 2020 18:00:00 -0300</pubDate>
      
      <guid>https://caioau.net/blog/backups/</guid><description>&lt;p&gt;Nesse texto vou mostrar como montei minha solução de backup com algumas propriedades interessantes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sincroniza com Android, usando &lt;a href=&#34;https://syncthing.net/&#34;&gt;syncthing&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Caso os dispositivos sejam comprometidos, os backups não poderão ser deletados/sequestrados (modo append-only).&lt;/li&gt;
&lt;li&gt;Monitorado: caso um backup falhe, um alerta será gerado, usando &lt;a href=&#34;https://healthchecks.io/&#34;&gt;healthchecks.io&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Caso tudo pegue fogo, como utilizar serviços em nuvem de forma segura.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;edits&#34;&gt;Edits&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;10Apr2021: Adicionado observação para rodar o borg como usuário root e salvar pacotes instalados (&lt;a href=&#34;https://gitlab.com/caioau/caioau.gitlab.io/-/commit/f75023a82473fb7b48595d0053cb5c16776f9e94#50a7b2d5d9e17e53fbb0f9b408c180e970718f44&#34;&gt;diff&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;16Nov2021: Nova localização da pasta do WhatsApp no Android 11 e outras pequenas atualizações (&lt;a href=&#34;https://gitlab.com/caioau/caioau.gitlab.io/-/compare/fe6f29dbaffd28ea032ebde616e2de65793b67d8...master?from_project_id=19243044#50a7b2d5d9e17e53fbb0f9b408c180e970718f44&#34;&gt;diff&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;27Mar2022: Atualização das dependências para o borg 1.2 e dump banco de dados postgres em container (&lt;a href=&#34;https://gitlab.com/caioau/caioau.gitlab.io/-/commit/6ebe56505d3ce6eb214b983ca4db053897e93df9&#34;&gt;diff&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;14Ago2022: Comentário sobre a mudança da operação prune, a partir da versão 1.2 (&lt;a href=&#34;https://gitlab.com/caioau/caioau.gitlab.io/-/commit/af0f8bae10d92f9ac7cc0986c200084c757a5c5b&#34;&gt;diff&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;25Nov2024: Avisos de descontinuação, atualização na configuração do borgmatic e usando systemd (&lt;a href=&#34;https://gitlab.com/caioau/caioau.gitlab.io/-/commit/5d4f9c8652e4e634d4b92f1f20b1104cbe069a63&#34;&gt;diff&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;10dez2025: Atualização do borgmatic (usando a versão do debian trixie) (&lt;a href=&#34;https://gitlab.com/caioau/caioau.gitlab.io/-/commit/0e194fa178d6f86f4b31287ec03fcd61da680620&#34;&gt;diff&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;agradecimentos&#34;&gt;Agradecimentos&lt;/h2&gt;
&lt;p&gt;Primeiramente, esse texto não seria possível sem o apoio do Gustavo Gus, que além de sempre me incentivar e orientar nesses desafios, me introduziu ao borg e revisou esse texto. Confira a pagina pessoal dele: &lt;a href=&#34;https://gus.computer/&#34;&gt;gus.computer&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Também gostaria de agradecer os amigues que sempre me apoiam e incentivam a disseminar o conhecimento.&lt;/p&gt;
&lt;h2 id=&#34;backup-uma-medida-para-evitar-desastres&#34;&gt;Backup: Uma medida para evitar desastres&lt;/h2&gt;
&lt;p&gt;Toda forma de armazenamento digital de dados pode falhar. Ter backups é importante, pois precisamos ter cópias reservas caso o disco rígido falhe ou em caso de furto do computador/celular.&lt;/p&gt;
&lt;h3 id=&#34;regra-3-2-1&#34;&gt;Regra 3-2-1&lt;/h3&gt;
&lt;p&gt;A regra 3-2-1 é uma recomendação muito popular de como fazer backups, ela diz:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;3: mantenha 3 cópias dos dados importantes: 1 original e mais 2 backups.&lt;/li&gt;
&lt;li&gt;2: salve os backups em 2 tipos de mídias: por exemplo, se você tiver um backup num HD externo e caso o seu computador seja infectado por um ransomware, o seu backup pode ser comprometido.&lt;/li&gt;
&lt;li&gt;1: tenha 1 backup &amp;ldquo;fora de casa&amp;rdquo; (pode ser outro local físico ou na nuvem).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Um vídeo excelente explicando essa regra é: &lt;a href=&#34;https://www.youtube.com/watch?v=rFO6NyLIP7M&#34;&gt;Data Backup: The 3-2-1 Rule &amp;ndash; canal ExplainingComputers&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A ideia geral dessa regra é a seguinte: caso tenha um problema no computador, temos uma cópia local de fácil e rápido acesso. E em caso de um desastre no local, temos uma cópia remota reservada que podemos restaurar.&lt;/p&gt;
&lt;h2 id=&#34;começando-pelo-começo-fazendo-backup-do-android-com-syncthing&#34;&gt;Começando pelo começo: Fazendo backup do Android com Syncthing&lt;/h2&gt;
&lt;p&gt;Por padrão, a maioria dos Android já faz backup das fotos (via Google Fotos) e das conversas do WhatsApp (via Google drive). Ou seja, esses dois Apps mais comuns já estão replicados.&lt;/p&gt;
&lt;p&gt;Mas o diabo está nos detalhes. O backup do WhatsApp (e das Fotos), por padrão,  está descriptografado, ou seja, o Google e qualquer um que conseguir acesso a sua conta do Google Drive conseguirá acessar todo o histórico de conversas do WhatsApp (e seus nudes do Google Fotos).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Edit: Em setembro de 2021, o WhatsApp disponibilizou a opção de criptografar os backups, veja as &lt;a href=&#34;https://faq.whatsapp.com/490592613091019&#34;&gt;instruções para habilitar a criptografia dos backups&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Além disso, como já vamos montar uma infraestrutura para fazer backup para o computador é interessante aproveitá-la para fazer backup do seu dispositivo Android com mais controle e privacidade.&lt;/p&gt;
&lt;p&gt;O &lt;a href=&#34;https://syncthing.net/&#34;&gt;Syncthing&lt;/a&gt; é uma forma para sincronizar os seus arquivos entre os seus dispositivos, de forma fácil, segura e sem armazenar na nuvem (ou qualquer dispositivo que não seja seu).&lt;/p&gt;
&lt;h3 id=&#34;como-usar-o-syncthing&#34;&gt;Como usar o Syncthing&lt;/h3&gt;
&lt;p&gt;O primeiro passo pra usar o syncthing é instalar no seu computador. Se você usa um sistema operacional baseado no Debian GNU/Linux, basta digitar &lt;code&gt;sudo apt install syncthing&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Vale observar que a versão do Syncthing que muitas distros empacotam tende a ser uma versão mais antiga, então, é recomendado instalar a versão mais recente pelo site do desenvolvedor.&lt;/p&gt;
&lt;p&gt;Além de GNU/Linux, o Syncthing funciona no Windows, macOS e *BSD.&lt;/p&gt;
&lt;p&gt;No celular, infelizmente ele só está disponível para Android.&lt;/p&gt;
&lt;p&gt;Uma vez instalado no computador, vamos agora instalar no Android: ele está disponível na loja de aplicativos livres &lt;a href=&#34;https://f-droid.org/en/packages/com.github.catfriend1.syncthingandroid/&#34;&gt;F-droid&lt;/a&gt; e na &lt;a href=&#34;https://play.google.com/store/apps/details?id=com.github.catfriend1.syncthingandroid&#34;&gt;Play Store&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Obs.: A partir de dez23 o aplicativo original (&lt;code&gt;com.nutomic.syncthingandroid&lt;/code&gt;) será descontinuado em favor do Syncthing-Fork (&lt;code&gt;com.github.catfriend1.syncthingandroid&lt;/code&gt;). Veja o &lt;a href=&#34;https://github.com/Catfriend1/syncthing-android/blob/main/README.md#switching-from-the-now-deprecated-official-version&#34;&gt;passo-a-passo para migrar pra o novo app&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;linkando-o-computador-com-o-android&#34;&gt;Linkando o computador com o Android&lt;/h4&gt;
&lt;p&gt;Primeiro, no computador,&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Execute o Syncthing no computador e uma interface web será aberta.&lt;/li&gt;
&lt;li&gt;clique no canto superior direito: Actions -&amp;gt; Show ID. Um QR code será exibido.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Segundo, no seu dispositivo Android,&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Abra o Syncthing no Android e libere as permissões necessárias.&lt;/li&gt;
&lt;li&gt;Toque na aba &amp;ldquo;devices&amp;rdquo;, e depois toque no &amp;ldquo;+&amp;rdquo; no canto superior direito. No campo &amp;ldquo;Device ID&amp;rdquo; no canto direito toque no ícone de QR code.&lt;/li&gt;
&lt;li&gt;Será necessário instalar o app Barcode scanner. Uma vez instalado, toque novamente no ícone do QR code e escaneie o QR code do seu computador.&lt;/li&gt;
&lt;li&gt;Por fim, de um nome para o computador no Android.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Último passo, volte para o seu computador,&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Na interface web aberta haverá um aviso informando que um dispositivo novo quer se conectar. Aceite e dê um nome para o seu Android.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;sincronizando-uma-pasta-entre-o-android-e-o-computador&#34;&gt;Sincronizando uma pasta entre o Android e o computador&lt;/h4&gt;
&lt;p&gt;Primeiro, no Android,&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;No Syncthing, vá na aba &amp;ldquo;Folder&amp;rdquo;, toque no ícone &amp;ldquo;+&amp;rdquo; no canto superior direito.&lt;/li&gt;
&lt;li&gt;Dê um nome para a pasta, toque no ícone de pasta, e escolha a pasta que quer sincronizar e ative o computador.&lt;/li&gt;
&lt;li&gt;Opcional, mas uma boa pratica, toque na opção &amp;ldquo;file versioning&amp;rdquo; e selecione a opção &amp;ldquo;TrashCan&amp;rdquo;. Dessa forma caso o computador delete um arquivo haverá um backup.&lt;/li&gt;
&lt;li&gt;Por fim, toque no ícone de check (✔️) no canto superior direito.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Segundo, no computador,&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Um aviso aparecerá na interface web informando que o dispositivo quer compartilhar uma pasta. Clique em &amp;ldquo;Add&amp;rdquo;, coloque o caminho do local para ser armazenado.&lt;/li&gt;
&lt;li&gt;Opcional, mas uma boa prática, clique na opção &amp;ldquo;file versioning&amp;rdquo; e selecione a opção &amp;ldquo;TrashCan&amp;rdquo;. Dessa forma caso o android delete um arquivo haverá um backup.&lt;/li&gt;
&lt;li&gt;Por fim clique em &amp;ldquo;Save&amp;rdquo;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Pronto! Agora a pasta selecionada estará sincronizada entre o computador e o Android.&lt;/p&gt;
&lt;p&gt;Eu pessoalmente sincronizo as seguintes pastas:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://caioau.net/blog/backups/syncthing-pastasCaio.jpg&#34; loading=&#34;lazy&#34;
         alt=&#34;Print do syncthing: sincronizo as pastas: WhatsApp, Pictures, DCIM, Signal e syncthing&#34; width=&#34;400px&#34;/&gt;&lt;figcaption&gt;&lt;p&gt;Print do syncthing: sincronizo as pastas: WhatsApp, Pictures, DCIM, Signal e syncthing&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;ul&gt;
&lt;li&gt;Edit 16Nov2021: A partir do Android 11 a pasta do WhatsApp mudou: antes era &lt;code&gt;/storage/emulated/0/WhatsApp&lt;/code&gt; agora está em &lt;code&gt;/storage/emulated/0/Android/media/com.whatsapp/WhatsApp&lt;/code&gt; (conforme o printscreen atualizado acima).&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;syncthing---considerações-finais&#34;&gt;Syncthing - considerações finais&lt;/h4&gt;
&lt;p&gt;Como não esquecer executar o Syncthing? Para os backups sempre serem feitos, você pode deixar o Syncthing sempre rodando no Android, mas outra opção é abrir uma vez por dia apenas. Um app que me ajuda muito para não esquecer é o &lt;a href=&#34;https://f-droid.org/en/packages/org.isoron.uhabits/&#34;&gt;Habits&lt;/a&gt;, também disponível na F-droid.&lt;/p&gt;
&lt;p&gt;Caso você tenha algum firewall instalado no seu computador, é importante liberar as portas do Syncthing, assim a transferência de dados quando você estiver na sua rede local será bem mais rápida. As portas usadas pelo Syncthing são: &lt;code&gt;22000/tcp&lt;/code&gt; e &lt;code&gt;21027/udp&lt;/code&gt;. Caso utilize o ufw, veja as instruções na documentação oficial &lt;a href=&#34;https://github.com/syncthing/syncthing/tree/main/etc/firewall-ufw&#34;&gt;syncthing-ufw-firewall&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Para melhorar a experiência de usuário, uma boa sugestão é instalar o cliente gráfico do Syncthing disponível no pacote &lt;code&gt;syncthing-gtk&lt;/code&gt;. Caso utilize Windows: &lt;a href=&#34;https://github.com/canton7/SyncTrayzor/&#34;&gt;SyncTrayzor&lt;/a&gt; e macOS: &lt;a href=&#34;https://github.com/syncthing/syncthing-macos&#34;&gt;syncthing-macos&lt;/a&gt;. Com o ícone na barra de tarefas, utilizar o syncthing é muito mais amigável e fácil.&lt;/p&gt;
&lt;p&gt;A seguir no texto vou ensinar como configurar para fazer backup do computador num Raspberry Pi. Pode ser interessante rodar o Syncthing diretamente no Raspberry, dessa forma o backup do Android não dependerá do computador. No site tem instruções de &lt;a href=&#34;https://docs.syncthing.net/users/firewall.html#tunneling-via-ssh&#34;&gt;como acessar a interface web do Syncthing no Raspberry&lt;/a&gt; e as instruções para &lt;a href=&#34;https://docs.syncthing.net/users/autostart.html#using-systemd&#34;&gt;iniciar o Syncthing automaticamente via Systemd&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;backup-do-computador-quando-tudo-era-mato-rsync-e-rssh-para-security&#34;&gt;Backup do computador: quando tudo era mato: rsync e rssh para security&lt;/h2&gt;
&lt;p&gt;Antes de eu conhecer o borg, usava o clássico Rsync para fazer os backups do computador no Raspberry Pi.&lt;/p&gt;
&lt;p&gt;O &lt;a href=&#34;https://rsync.samba.org/&#34;&gt;Rsync&lt;/a&gt; é um programa que faz backups incrementais de forma rápida.&lt;/p&gt;
&lt;p&gt;Como eu tinha um receio de caso meu computador fosse comprometido ele poderia comprometer o Raspberry. Descobri o &lt;a href=&#34;http://www.pizzashack.org/rssh/&#34;&gt;rssh&lt;/a&gt;. Ele é um shell restrito que permite apenas o scp, rsync, sftp etc &amp;hellip; dessa forma caso comprometido, se tentar acessar o raspberry, mesmo com as credenciais corretas não será permitido, exibindo o erro abaixo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#8a8a8a;background-color:#1c1c1c;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;This account is restricted by rssh.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Allowed commands: scp sftp rsync
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;If you believe this is in error, please contact your system administrator&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Usava o Rsync com os seguintes argumentos, executado pelo cron:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#8a8a8a;background-color:#1c1c1c;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rsync -avh --stats -P --log-file=~/rsync-home.log /home/ rasp:/caminho/na/rasp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Obs.: O rssh foi descontinuado em 2019, podemos ter um comportamento semelhante usando o rssync que já vem incluso no rsync: &lt;a href=&#34;https://manpages.debian.org/bookworm/rsync/rrsync.1.en.html&#34;&gt;manpage do rrsync&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;borgbackups-o-santo-graal-dos-backups&#34;&gt;BorgBackups: O Santo graal dos backups&lt;/h2&gt;
&lt;p&gt;Quando conheci o Borgbackup (vulgo borg) minha mente explodiu! Tem tudo que eu sentia que o Rsync não entregava, como:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Todos os backups são backups completos, não incrementais, dessa forma tenho o &amp;ldquo;histórico&amp;rdquo; (versionamento) dos arquivos.
&lt;ul&gt;
&lt;li&gt;E muito mais eficiente em espaço! O Borg ocupa bem pouco espaço em disco!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Os backups são criptografados!&lt;/li&gt;
&lt;li&gt;Os backups são comprimidos, dessa forma os meus arquivos csv enormes ficam bem menores.&lt;/li&gt;
&lt;li&gt;Tem um modo, que vamos detalhar logo menos, chamado &amp;ldquo;append-only&amp;rdquo; dessa forma o backup só será acessado para acrescentar novas coisas, não deletar; ótimo para a segurança!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Não por acaso o Borg já foi chamado como o Santo Graal dos backups.&lt;/p&gt;
&lt;h3 id=&#34;borg-em-ação&#34;&gt;Borg em ação:&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#8a8a8a;background-color:#1c1c1c;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ borg create -v --stats /path/to/repo::{hostname}-{now:%Y-%m-%dT%H:%M:%S.%f} /path/to/be/backuped
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;------------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Archive name: nuc-2020-09-06T10:38:03.675158
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Archive fingerprint: 8a7d8a10a54211c74e3dff1e3f5f67f65c1a85935d5e2a5ee23adb8d0fce588c
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Time (start): Sun, 2020-09-06 10:38:03
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Time (end):   Sun, 2020-09-06 10:38:09
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Duration: 5.21 seconds
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Number of files: &lt;span style=&#34;color:#00afaf&#34;&gt;11645&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Utilization of max. archive size: 0%
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;------------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                       Original size      Compressed size    Deduplicated size
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;This archive:                4.78 GB              4.38 GB            103.36 MB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;All archives:               84.61 GB             77.59 GB              9.51 GB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                       Unique chunks         Total chunks
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Chunk index:                   &lt;span style=&#34;color:#00afaf&#34;&gt;16246&lt;/span&gt;               &lt;span style=&#34;color:#00afaf&#34;&gt;228864&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;------------------------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Acima temos a saída do borg depois de adicionados alguns arquivos num repositório de backup e executado para fazer um novo backup. Note o quão eficiente em espaço é o borg: se cada backup fosse um &amp;ldquo;tar&amp;rdquo; seriam gastos 84.61 GB . Se o tar fosse comprimido 77.59 GB, mas o borg gastou apenas 9.51GB! Esses números se referem a todos os backups do repositório (all archives).&lt;/p&gt;
&lt;h3 id=&#34;interfaces-do-borg-borgmatic-e-vorta&#34;&gt;Interfaces do Borg: borgmatic e Vorta:&lt;/h3&gt;
&lt;p&gt;O borg é utilizado através da linha de comando. Para automatizar e tornar mais fácil a operação dele temos algumas interfaces:&lt;/p&gt;
&lt;p&gt;Pra quem usa desktop temos o Vorta:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://caioau.net/blog/backups/vorta-borgbackup.png&#34; loading=&#34;lazy&#34; width=&#34;600px&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Vamos falar mais do Borgmatic, mas para quem quer uma interface gráfica linda pro borg temos o Vorta.&lt;/p&gt;
&lt;h4 id=&#34;borgmatic-torna-o-borg-automático-e-completo&#34;&gt;Borgmatic: Torna o borg automático e completo&lt;/h4&gt;
&lt;p&gt;O Borgmatic permite que através de um único arquivo de configuração yaml seja gerenciado todas as ações do borg, além de coisas como fazer backups de bancos de dados, além de outras integrações.&lt;/p&gt;
&lt;h3 id=&#34;borgmatic-instalando-e-configurando&#34;&gt;Borgmatic: instalando e configurando&lt;/h3&gt;
&lt;p&gt;Podemos instalar através do pacote do Debian com um &lt;code&gt;sudo apt install borgbackup borgmatic&lt;/code&gt;, mas não teremos a versão mais recente. Há três opções: Instalar uma versão mais recente através do &lt;a href=&#34;https://wiki.debian.org/Backports&#34;&gt;backports&lt;/a&gt; ou baixar o binário para o &lt;a href=&#34;https://github.com/borgbackup/borg/releases&#34;&gt;computador&lt;/a&gt; e o &lt;a href=&#34;https://borg.bauerj.eu/&#34;&gt;Raspberry Pi (não oficial)&lt;/a&gt;, ou compilar via pip como demonstrado a seguir.&lt;/p&gt;
&lt;h4 id=&#34;instalando-através-do-gerenciador-de-pacotes-do-python-pip&#34;&gt;Instalando através do gerenciador de pacotes do Python Pip&lt;/h4&gt;
&lt;p&gt;Primeiro, instale as dependências:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#8a8a8a;background-color:#1c1c1c;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt-get install python3-venv python3-dev python3-pip &lt;span style=&#34;color:#af0000&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;libacl1-dev libacl1 &lt;span style=&#34;color:#af0000&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;libssl-dev openssl &lt;span style=&#34;color:#af0000&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;liblz4-dev libzstd-dev libxxhash-dev &lt;span style=&#34;color:#af0000&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;build-essential &lt;span style=&#34;color:#af0000&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pkg-config python3-pkgconfig&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Depois, instale o Borg e Borgmatic (instale no computador e no Raspberry Pi) dentro de um venv:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#8a8a8a;background-color:#1c1c1c;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;python3 -m venv ~/venv
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0087ff&#34;&gt;source&lt;/span&gt; ~/venv/bin/activate
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pip3 install -U pip setuptools wheel
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pip3 install -U borgbackup borgmatic&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Observação: no meu Raspberry Pi 3 demorou 7 minutos os comandos acima.&lt;/p&gt;
&lt;p&gt;Adicionando no $PATH: tive alguns problemas dizendo que o Borg não estava instalado, porém como ele está instalado em &lt;code&gt;~/venv/bin/borg&lt;/code&gt;, só precisei criar um link simbólico com &lt;code&gt;sudo ln -s $(which borg) /usr/bin/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Observação: O método acima funciona bem para a maioria das situações, mas tive alguns problemas de permissão, principalmente com contêineres docker pois os arquivos dos volumes dos mesmos estavam sendo gerados com outro  usuário e grupo do usuário atual. Nesses casos podemos rodar o borg com super usuário root, fazendo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#8a8a8a;background-color:#1c1c1c;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;python3 -m venv ~/venv
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0087ff&#34;&gt;source&lt;/span&gt; ~/venv/bin/activate
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo pip3 install --user -U pip setuptools wheel
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo pip3 install --user -U borgbackup borgmatic&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Se atente para não esquecer o &amp;ndash;user (como root/sudo), pois sem isso o pip vai sobre sobrescrever o python da sua distro, podendo causar problemas.&lt;/p&gt;
&lt;h4 id=&#34;arquivo-de-configuração-borgmatic&#34;&gt;Arquivo de configuração borgmatic&lt;/h4&gt;
&lt;p&gt;Para gerar o seu arquivo de configuração, basta rodar o comando &lt;code&gt;generate-borgmatic-config&lt;/code&gt;. Por exemplo, o arquivo no Borgmatic que uso é:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#8a8a8a;background-color:#1c1c1c;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;source_directories:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - /etc/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - /home/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - /root/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - /var/spool/ &lt;span style=&#34;color:#4e4e4e&#34;&gt;# salvar as crontabs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;repositories:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - path: usuario@rasp:/mnt/bak/borgbackups/borg_pc &lt;span style=&#34;color:#4e4e4e&#34;&gt;# hd_externo na rasp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      label: rasp-hdexterno
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - path: usuario@rasp:/mnt/borgbackups/borg_pc
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      label: rasp-sdcard
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - usuario@repo2:/mnt/borgbackups/borg_pc
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      label: repo2-hdd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;exclude_patterns:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#00afaf&#34;&gt;&amp;#39;*/.cache/&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#00afaf&#34;&gt;&amp;#39;*.pyc&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;exclude_caches: &lt;span style=&#34;color:#0087ff&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;flags: &lt;span style=&#34;color:#0087ff&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;exclude_if_present:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - .nobackup
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;encryption_passphrase: &lt;span style=&#34;color:#00afaf&#34;&gt;&amp;#34;# senha gerada no keepassxc&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;keep_within: 48H
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;keep_hourly: &lt;span style=&#34;color:#00afaf&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;keep_daily: &lt;span style=&#34;color:#00afaf&#34;&gt;7&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;keep_weekly: &lt;span style=&#34;color:#00afaf&#34;&gt;12&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;keep_monthly: -1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;keep_yearly: -1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;match_archives: &lt;span style=&#34;color:#00afaf&#34;&gt;&amp;#39;*&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;checks:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - name: repository
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      frequency: &lt;span style=&#34;color:#00afaf&#34;&gt;1&lt;/span&gt; weeks
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - name: archives
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      frequency: &lt;span style=&#34;color:#00afaf&#34;&gt;2&lt;/span&gt; weeks
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - name: data
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      frequency: &lt;span style=&#34;color:#00afaf&#34;&gt;4&lt;/span&gt; weeks
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;healthchecks:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ping_url: https://hc-ping.com/seu_uuid
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;before_backup:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - /script_que_faz_port_knocking
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - docker &lt;span style=&#34;color:#0087ff&#34;&gt;exec&lt;/span&gt; -i postgres_container /bin/bash -c &lt;span style=&#34;color:#00afaf&#34;&gt;&amp;#34;pg_dumpall -U postgres&amp;#34;&lt;/span&gt; &amp;gt; /caminho/db.sql
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - apt list --installed &amp;gt; ~/apt.installed &lt;span style=&#34;color:#4e4e4e&#34;&gt;# salva a lista de pacotes instalados&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Esse arquivo faz o backup dos diretórios /etc/ e /home/, no Raspberry Pi (no HD externo e outro diretório) e repo2 não incluindo caches.&lt;/p&gt;
&lt;p&gt;Além disso, para não ocupar todo o disco, é definida uma política de retenção (prune). Dessa forma os backups antigos serão deletados. Os backups das últimas 48 horas jamais serão deletados e teremos no máximo dois backups por dia, os backups dos últimos 7 dias, 12 semanais etc &amp;hellip; e mantemos todos os mensais e todos anuais.&lt;/p&gt;
&lt;p&gt;Observação: A partir da versão 1.2 do borg, a operação prune não libera de fato o espaço em disco, foi criada uma nova operação chamada compact, então quando rodar o prune chame o compact em seguida.&lt;/p&gt;
&lt;p&gt;O Borgmatic também checa a integridade dos backups (opção check do borg/borgmatic) (parte consistency), caso os arquivos sejam corrompidos no disco.&lt;/p&gt;
&lt;p&gt;Também salva o dump de bancos de dados PostgreSQL.&lt;/p&gt;
&lt;p&gt;No meu caso, o meu Raspberry Pi está protegido por port knocking (técnica para proteger serviços numa rede). A porta do ssh fica fechada e só abre após uma sequência de portas são batidas apenas para o IP que acertou e por um período de tempo. Então o Borgmatic executa esse script antes do backup.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://healthchecks.io/&#34;&gt;healthchecks.io&lt;/a&gt;: É um serviço que monitora se uma tarefa (no nosso caso o backup) está sendo feito na frequência esperada. Caso o backup deixe de ser feito com exito vamos receber um email e/ou uma mensagem no Telegram (tem outras integrações). Crie sua conta no site e coloque o link que o borgmatic deve pingar.&lt;/p&gt;
&lt;h4 id=&#34;passo-a-passo&#34;&gt;Passo a passo&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Crie o seu arquivo de configuração do Borgmatic, se quiser, adapte a partir do meu arquivo e mude as pastas que você deseja fazer backup (source_directories) e onde serão salvos (repositories).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Vale lembrar que devido ao cartão SD do Raspberry Pi, não é aconselhável salvar nada crítico nele pois depois de algum tempo o cartão simplesmente corrompe e tudo é perdido. Há algumas boas práticas para mitigar isso, mas não há milagres! Então conecte um HD externo criptografado no Raspberry Pi e salve os backups lá.&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;
&lt;p&gt;Gere sua senha segura usando um gerenciador de senhas como o KeePassXC e coloque no campo &lt;code&gt;encryption_passphrase&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Por fim, crie a sua conta no &lt;a href=&#34;https://healthchecks.io/&#34;&gt;healthchecks.io&lt;/a&gt;, configure as integrações (se quer receber alertas por email, Telegram etc &amp;hellip;), e coloque o link do check no arquivo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Com o seu arquivo de configuração pronto, salve-o em: &lt;code&gt;~/.config/borgmatic/config.yaml&lt;/code&gt; (se for rodar como root coloque-o em &lt;code&gt;/etc/borgmatic/config.yaml&lt;/code&gt;, certifique-se que suas permissões seja &lt;code&gt;0600&lt;/code&gt; e pertence a &lt;code&gt;root:root&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;O próximo passo é criar uma chave ssh para conectar no seu Raspberry Pi,&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;No terminal, faça: &lt;code&gt;ssh-keygen -t ed25519 -C &amp;quot;usuario@PC.borg&amp;quot;&lt;/code&gt;, lembrando que essa chave não pode ter senha (então só de um enter sem digitar nada), pois o backup vai rodar automaticamente. Caso já tenha uma chave importante com senha que usa pra outras coisas é interessante ter uma chave dedicada pro borg sem senha (configure seu &lt;a href=&#34;https://wiki.archlinux.org/index.php/SSH_keys#Managing_multiple_keys&#34;&gt;~/.ssh/config&lt;/a&gt; para controlar qual chave usar etc &amp;hellip;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Copiando a sua nova chave ssh no Raspberry Pi: &lt;code&gt;ssh-copy-id -i ~/.ssh/id_ed25519 usuario@192.168.1.160&lt;/code&gt; (ajuste o usuário e o IP) e digite a senha, depois veja se fazendo &lt;code&gt;ssh usuario@192.168.1.160&lt;/code&gt; ele logará no Raspberry Pi automaticamente sem pedir senha.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Para iniciar o repositório: &lt;code&gt;borgmatic init -e repokey-blake2&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Adicionando no crontab: para rodar o backup automaticamente, vamos colocar para ser executado via cron, faça:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#8a8a8a;background-color:#1c1c1c;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ crontab -e
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00afaf&#34;&gt;5&lt;/span&gt; */2 * * * ~/.local/bin/borgmatic create --stats --files --log-file ~/borgmatic.log --verbosity &lt;span style=&#34;color:#00afaf&#34;&gt;1&lt;/span&gt; --monitoring-verbosity &lt;span style=&#34;color:#00afaf&#34;&gt;1&lt;/span&gt; --log-file-verbosity &lt;span style=&#34;color:#00afaf&#34;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Repare que a opção &lt;code&gt;create&lt;/code&gt; do borgmatic foi especificada, dessa forma o borgmatic vai apenas criar o backup, caso queira que o Borgmatic além de criar seja feito o &lt;code&gt;check&lt;/code&gt; e &lt;code&gt;prune&lt;/code&gt;, retire a opção &lt;code&gt;create&lt;/code&gt;, dessa forma o Borgmatic fará o &lt;code&gt;prune&lt;/code&gt;, depois o &lt;code&gt;create&lt;/code&gt; e por fim o &lt;code&gt;check&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Isso fará que o backup seja executado a cada 2 horas no minuto 5, dica: o site &lt;a href=&#34;https://crontab.guru/&#34;&gt;crontab.guru&lt;/a&gt; ajuda a entender a sintaxe do cron.&lt;/p&gt;
&lt;p&gt;Observação, se optou por rodar o borg como root (por causa dos problemas de permissão), faça:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#8a8a8a;background-color:#1c1c1c;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo crontab -e -u root
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00afaf&#34;&gt;5&lt;/span&gt; */2 * * * &lt;span style=&#34;color:#0087ff&#34;&gt;PATH&lt;/span&gt;=&lt;span style=&#34;color:#0087ff&#34;&gt;$PATH&lt;/span&gt;:/usr/bin:/usr/local/bin /root/.local/bin/borgmatic create --stats --files --log-file ~/borgmatic.log --verbosity &lt;span style=&#34;color:#00afaf&#34;&gt;1&lt;/span&gt; --monitoring-verbosity &lt;span style=&#34;color:#00afaf&#34;&gt;1&lt;/span&gt; --log-file-verbosity &lt;span style=&#34;color:#00afaf&#34;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Por fim, é preciso testar se o backup funcionou. Vamos restaurar um backup feito pelo borg para ver se todos os arquivos estão lá e se tudo funciona como deveria:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#8a8a8a;background-color:#1c1c1c;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ borgmatic list
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;t430-2020-09-07T16:00:09.936979  Mon, 2020-09-07 16:00:12 [c9...5f]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;t430-2020-09-07T16:24:16.752983  Mon, 2020-09-07 16:24:21 [fa...97]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;t430-2020-09-07T16:28:19.692725  Mon, 2020-09-07 16:28:22 [93...9d] &amp;lt;--(mais recente)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ mkdir /tmp/borg_teste
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ borg mount /mnt/bak/borgbackups/borg_pc/::t430-2020-09-07T16:28:19.692725 /tmp/borg_teste/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ &lt;span style=&#34;color:#0087ff&#34;&gt;cd&lt;/span&gt; /tmp/borg_teste/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ du -shxc *
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;6.1G	home
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;6.1G	total&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Repare como o du reportou que temos 6 GB de arquivos, ou seja, tudo funcionando como deveria! Outra opção é gerar um tar com a opção &lt;code&gt;export-tar&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id=&#34;modo-append-only&#34;&gt;Modo append-only&lt;/h4&gt;
&lt;p&gt;Chegamos na esperada parte do modo &lt;code&gt;append-only&lt;/code&gt;. Esse modo faz com que o borg não possa deletar ou sobrescrever os dados inseridos anteriormente.&lt;/p&gt;
&lt;p&gt;Afim de habilitar esse modo, nós vamos especificar que quando conectado no Raspberry Pi, o Borg deve rodar no modo append-only. No Raspberry Pi edite o arquivo &lt;code&gt;~/.ssh/authorized_keys&lt;/code&gt;, e adicione:&lt;/p&gt;
&lt;p&gt;Edite o arquivo para ficar:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#8a8a8a;background-color:#1c1c1c;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;~/.ssh/authorized_keys:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0087ff&#34;&gt;command&lt;/span&gt;=&lt;span style=&#34;color:#00afaf&#34;&gt;&amp;#34;borg serve --append-only --restrict-to-path /mnt/bak/borgbackups/borg_pc&amp;#34;&lt;/span&gt;,restrict ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGc+rutXNxxYCjFpD5v83kDXUVA8Ffh3dWlIeBOc5HgU usuario@PC.borg&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Adicionamos antes da chave o seguinte: &lt;code&gt;command=&amp;quot;borg serve --append-only --restrict-to-path /mnt/bak/borgbackups/borg_pc&amp;quot;,restrict&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Repare que o borg está sendo instanciado com a opção &lt;code&gt;--append-only&lt;/code&gt; e opcionalmente passamos o &lt;code&gt;--restrict-to-path&lt;/code&gt; que restringe quais repositórios aquela chave pode acessar (pode ser especificada múltiplas vezes).&lt;/p&gt;
&lt;p&gt;Para testar, faça &lt;code&gt;ssh usuario@192.168.1.160&lt;/code&gt; e espere alguns segundos, dê um enter e aparecerá:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#8a8a8a;background-color:#1c1c1c;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ ssh usuario@192.168.1.160
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PTY allocation request failed on channel &lt;span style=&#34;color:#00afaf&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0087ff&#34;&gt;$LOG&lt;/span&gt; ERROR borg.archiver Remote: Borg 1.1.13: Got unexpected RPC data format from client.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Connection to 192.168.1.160 closed.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Repare que agora não é mais aberto um shell como antes, ele executa o borg assim que conecta.&lt;/p&gt;
&lt;p&gt;Prune no modo append-only: com o append-only não conseguiremos que o borg faça o prune (deletar backups antigos, pra não encher o disco), nesse caso, copiei o config.yaml do borgmatic no Raspberry Pi e rodo prune e check de lá (não esqueça que na parte de repositories é preciso especificar apenas o caminho da pasta, sem usuario@rasp)(via cron tmb)(também criei um check no healtchecks dedicado pro prune e check).&lt;/p&gt;
&lt;p&gt;O crontab na raspberry pi é o seguinte:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#8a8a8a;background-color:#1c1c1c;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo crontab -e -u borguser
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0087ff&#34;&gt;PATH&lt;/span&gt;=/home/borguser/.local/bin:/usr/local/bin:/usr/bin:/bin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e4e4e&#34;&gt;# prune (e compact) executado diariamente&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00afaf&#34;&gt;42&lt;/span&gt; &lt;span style=&#34;color:#00afaf&#34;&gt;0&lt;/span&gt; * * * borgmatic prune compact --stats --list --log-file ~/borgmatic-prune.log -c ~/.config/borgmatic.d/* --verbosity &lt;span style=&#34;color:#00afaf&#34;&gt;1&lt;/span&gt; --monitoring-verbosity &lt;span style=&#34;color:#00afaf&#34;&gt;1&lt;/span&gt; --log-file-verbosity &lt;span style=&#34;color:#00afaf&#34;&gt;2&lt;/span&gt; &amp;gt; /dev/null 2&amp;gt;&amp;amp;&lt;span style=&#34;color:#00afaf&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e4e4e&#34;&gt;# checagem da integridade (check) executada semanalmente&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00afaf&#34;&gt;21&lt;/span&gt; &lt;span style=&#34;color:#00afaf&#34;&gt;2&lt;/span&gt; * * &lt;span style=&#34;color:#00afaf&#34;&gt;1&lt;/span&gt; borgmatic check --log-file ~/borgmatic-checks.log -c ~/borgmatic.d/* --verbosity &lt;span style=&#34;color:#00afaf&#34;&gt;1&lt;/span&gt; --monitoring-verbosity &lt;span style=&#34;color:#00afaf&#34;&gt;1&lt;/span&gt; --log-file-verbosity &lt;span style=&#34;color:#00afaf&#34;&gt;2&lt;/span&gt; &amp;gt; /dev/null 2&amp;gt;&amp;amp;&lt;span style=&#34;color:#00afaf&#34;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h4 id=&#34;trocando-o-cron-pelo-timer-do-systemd&#34;&gt;Trocando o cron pelo timer do systemd&lt;/h4&gt;
&lt;p&gt;Inicialmente estava usando o cron para disparar os backups, mas acabei esbarando por duas questões:&lt;/p&gt;
&lt;p&gt;Primeiro (e mais importante): Quando o backup inicia o computador fica significativamente mais lento.&lt;/p&gt;
&lt;p&gt;E nos servidores o arquivo de log acaba enchendo, claro que podemos usar o &lt;a href=&#34;https://wiki.archlinux.org/title/Logrotate&#34;&gt;logrotate&lt;/a&gt; para configurar um setup para rotação dos logs, mas no systemd é nativo.&lt;/p&gt;
&lt;p&gt;Por essas razões acabei migrando do cron para os timers do systemd.&lt;/p&gt;
&lt;p&gt;Para usar o systemd precisamos definir o arquivo de configuração do serviço que roda o borgmatic e um timer que o dispara.&lt;/p&gt;
&lt;p&gt;Definindo o serviço:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#8a8a8a;background-color:#1c1c1c;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-systemd&#34; data-lang=&#34;systemd&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e4e4e&#34;&gt;# /etc/systemd/system/borgmatic.service&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#5f8700&#34;&gt;[Unit]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Description=&lt;span style=&#34;color:#00afaf&#34;&gt;borgmatic backup&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Wants=&lt;span style=&#34;color:#00afaf&#34;&gt;network-online.target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;After=&lt;span style=&#34;color:#00afaf&#34;&gt;network-online.target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ConditionACPower=&lt;span style=&#34;color:#00afaf&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e4e4e&#34;&gt;# roda apenas se plugado na tomada, se quiser rodar sempre comente a linha acima.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Documentation=&lt;span style=&#34;color:#00afaf&#34;&gt;https://torsion.org/borgmatic/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#5f8700&#34;&gt;[Service]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Type=&lt;span style=&#34;color:#00afaf&#34;&gt;oneshot&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ProtectSystem=&lt;span style=&#34;color:#00afaf&#34;&gt;full&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e4e4e&#34;&gt;# protege algumas pastas como /boot e /etc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Nice=&lt;span style=&#34;color:#00afaf&#34;&gt;19&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CPUSchedulingPolicy=&lt;span style=&#34;color:#00afaf&#34;&gt;batch&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IOSchedulingClass=&lt;span style=&#34;color:#00afaf&#34;&gt;best-effort&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IOSchedulingPriority=&lt;span style=&#34;color:#00afaf&#34;&gt;6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IOWeight=&lt;span style=&#34;color:#00afaf&#34;&gt;100&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e4e4e&#34;&gt;# diminui a prioriodade de io&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Restart=&lt;span style=&#34;color:#00afaf&#34;&gt;no&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;LogRateLimitIntervalSec=&lt;span style=&#34;color:#00afaf&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ExecStartPre=&lt;span style=&#34;color:#00afaf&#34;&gt;sleep 1m&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e4e4e&#34;&gt;# espera 1min antes de começar&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ExecStart=&lt;span style=&#34;color:#00afaf&#34;&gt;borgmatic --stats --files -c /etc/borgmatic/config.yaml --monitoring-verbosity 1 --syslog-verbosity -1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;E o timer: Nesse exemplo o backup vai rodar duas vezes por dia, uma as 2:10 da manhã e a outra as 4:10 da tarde (a sintaxe é um pouco diferente do as expressões cron). Repare no delay random de 10m, que introduz alguns minutos aleatoriamente para evitar gargalos quando muitas maquinas executam em horarios similares.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#8a8a8a;background-color:#1c1c1c;-moz-tab-size:4;-o-tab-size:4;tab-size:4;display:grid;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#8a8a8a;background-color:#1c1c1c;-moz-tab-size:4;-o-tab-size:4;tab-size:4;display:grid;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#454545&#34;&gt; 1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#454545&#34;&gt; 2
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#454545&#34;&gt; 3
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#454545&#34;&gt; 4
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#454545&#34;&gt; 5
&lt;/span&gt;&lt;span style=&#34;background-color:#323232&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#454545&#34;&gt; 6
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;background-color:#323232&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#454545&#34;&gt; 7
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;background-color:#323232&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#454545&#34;&gt; 8
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#454545&#34;&gt; 9
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#454545&#34;&gt;10
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#454545&#34;&gt;11
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#454545&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#8a8a8a;background-color:#1c1c1c;-moz-tab-size:4;-o-tab-size:4;tab-size:4;display:grid;&#34;&gt;&lt;code class=&#34;language-systemd&#34; data-lang=&#34;systemd&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e4e4e&#34;&gt;# /etc/systemd/system/borgmatic.timer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#5f8700&#34;&gt;[Unit]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Description=&lt;span style=&#34;color:#00afaf&#34;&gt;Run borgmatic backup&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#5f8700&#34;&gt;[Timer]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex; background-color:#323232&#34;&gt;&lt;span&gt;OnCalendar=&lt;span style=&#34;color:#00afaf&#34;&gt;*-*-* 16:10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex; background-color:#323232&#34;&gt;&lt;span&gt;OnCalendar=&lt;span style=&#34;color:#00afaf&#34;&gt;*-*-* 02:10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex; background-color:#323232&#34;&gt;&lt;span&gt;RandomizedDelaySec=&lt;span style=&#34;color:#00afaf&#34;&gt;10m&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Persistent=&lt;span style=&#34;color:#00afaf&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#5f8700&#34;&gt;[Install]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;WantedBy=&lt;span style=&#34;color:#00afaf&#34;&gt;timers.target&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Habilitando o timer:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#8a8a8a;background-color:#1c1c1c;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl daemon-reload
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl &lt;span style=&#34;color:#0087ff&#34;&gt;enable&lt;/span&gt; borgmatic.service
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e4e4e&#34;&gt;# vendo os logs:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo journalctl -u borgmatic&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h4 id=&#34;borg-no-qubesos&#34;&gt;Borg no QubesOS&lt;/h4&gt;
&lt;p&gt;O cron não vem instalado por padrão nos templates do QubesOS, instale o pacote &lt;code&gt;cronie&lt;/code&gt; para templates Fedora e &lt;code&gt;cron&lt;/code&gt; templates Debian, e faça &lt;code&gt;qvm-service --enable work crond&lt;/code&gt; no dom0 no Debian é apenas cron, para habilitar o cron na Qube &lt;code&gt;work&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;como-usar-a-nuvem-de-maneira-segura&#34;&gt;Como usar a nuvem de maneira segura&lt;/h2&gt;
&lt;p&gt;No caso do borg, a criptografia já é nativa, então basta dar um jeito de &amp;ldquo;transferir&amp;rdquo; os arquivos do borg para a nuvem, nesses casos podemos usar o &lt;a href=&#34;https://rclone.org/&#34;&gt;rclone.org&lt;/a&gt; que permite acessar os provedores de nuvem populares como Google Drive, Dropbox etc&amp;hellip;&lt;/p&gt;
&lt;p&gt;Outra opção é usar um provedor que suporta o borg, da mesma forma que fizemos com o Raspberry Pi com uma VPS genérica pode ser usada para mesma finalidade. Algumas hospedagens populares são: DigitalOcean, Linode, vultr, buyvm, ovh e hetzner.&lt;/p&gt;
&lt;p&gt;Por fim, outra opção é usar um provedor que integra o borg: O &lt;a href=&#34;https://www.rsync.net/&#34;&gt;rsync.net&lt;/a&gt; suporta e tem preço promocional para quem usar o borg, a hetzner tem &lt;a href=&#34;https://www.hetzner.com/storage/storage-box&#34;&gt;storage box&lt;/a&gt; e o meu favorito é o &lt;a href=&#34;https://www.borgbase.com/&#34;&gt;borgbase.com&lt;/a&gt; que tem um plano gratuito com 10 GB.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
