Diz-se que você só tem certeza de que tem um backup quando precisa recuperá-lo, e isso eu já fiz inúmeras vezes com o Borg, então posso assegurar por experiência própria. Realmente ele funciona.
O Borg Backup é uma ferramenta em linha de comandos para realização de backups ao estilo dos mais conhecidos sistemas de controle de versão de código fonte, o que o torna bastante amigável para quem já lida diariamente com este tipo de ferramenta.
Dentre seus recursos podemos destacar:
- Backups comprimidos e criptografados
- Repositórios autenticados
- Multiplataforma (Linux, BSD, Mac OS etc)
- Backups montáveis via FUSE
- Uma comunidade ativa
- Outros
O Borg Backup, ou apenas Borg, nasceu como um fork de outro projeto chamado Attic, cujo desenvolvimento está parado desde 2015. O Borg, por outro lado, surgiu nesta mesma época e tem atualizações frequentes em seu repositório.
No momento em que escrevo/atualizo esta página, a última versão estável foi lançada em Jul/2024 iniciando a série 1.4, mas a equipe de desenvolvimento está atualmente focada no lançado da serie 2.0 que está em estágio Beta e certamente trará algumas boas novidades.
Ainda assim, a versão atual é excelente, estável e recomendada, então vejamos como instalar e usar no dia a dia.
Instalando o Borg
A instalação é bem simples. No Debian e no Ubuntu, por exemplo, você poderia fazê-lo com o comando:
sudo apt install borgbackup
Em outros sistemas como Arch Linux, NetBSD e OSX, use a ferramenta de gerenciamento de pacotes adequada, o que instalará apenas uma simples ferramenta de linha de comandos, sem enfeites. Nada de leds, músicas festivas e nem nada emocionante.
Criando um repositório
Repositório é como chamamos o diretório que foi devidamente preparado para receber seus backups.
Ele pode estar em qualquer lugar no seu disco e preferivelmente em outro disco (bônus de segurança para quem o fizer em um disco acessível remotamente em outro computador).
Para exemplificar, neste texto eu vou considerar que o nosso repositório estará em um disco montado em /mnt/backup e com a linha de comandos abaixo, estou criando um repositório chamado “borg” para realizar o backup de todos os meus dados.
borg init /mnt/backup/borg
Se lembra de eu ter dito lá no início que ele se parece com um sistema de controle de versionamento ? Se você usa o Git com certa regularidade, já deve ter usado uma linha parecida com essa algumas vezes.
Será solicitado uma senha que posteriormente será exigida para todas as operações neste repositório então, escolha uma boa senha e a anote em local seguro, pois sem ela não será possível acessar o seu repositório nem os seus backups futuramente.
Caso você não queira colocar senha no repositório adicione o parâmetro ‘-e none’. Como no exemplo abaixo:
borg init -e none /mnt/backup/borg
Uma recomendação importante a respeito da senha no backup: Não adianta você proteger o seu computador contra ataques, invasões, e roubo de informação, se o seu backup estiver e um disco que é facilmente escondido no bolso e acessado por qualquer estranho com a sua posse. Se não quiser usar uma senha no seu repositório, você pode proteger o disco inteiro usando alguma ferramenta de criptografia como Veracrypt, Luks etc. Mas não deixe seu backup sem segurança.
Voltando ao comando “borg init”, veja que em qualquer dos dois casos (com ou sem o argumento “-e none”) você ainda não criou qualquer cópia de dados. Você apenas criou o seu repositório que estará pronto para receber seus backups.
Realizando os backups
Com o repositório pronto você pode executar o comando abaixo para criar o seu primeiro backup da pasta Documentos.
borg create /mnt/backup/borg::docs1 Documentos
Observe aqui que o caminho para o repositório (/mnt/backup/borg) é separado do nome do backup (docs1) pelos “::”.
Esta sintaxe será usada toda vez que ambos precisarem ser informados ao mesmo tempo, exceto quando usarmos variáveis de ambiente (o que veremos mais adiante).
Caso seu repositório seja protegido por senha, você deverá informá-la para que o Borg possa acessá-lo e o backup então iniciar de fato.
Embora me pareça que é algo óbvio, vou registrar aqui que todo backup deve tem um nome e neste exemplo eu chamei de “docs1”, mas poderia ser qualquer outro nome.
Outra nota importante é que em um próximo backup este nome não poderá ser usado novamente (a não ser que você renomeie este backup).
Uma dica de ouro para ser feliz com o uso do Borg: Se você pretende automatizar seus backups de alguma forma, pense em um nome que possa ser alterado automaticamente a cada backup, usando o nome da máquina, data/hora etc.
A diante eu darei uma dica de como fazer isso usando algumas “macros” do próprio borg.
Backups compactados
Se você estiver disposto a “perder” alguns segundos aumentando a compressão dos dados, para com isso obter melhor ganho de espaço, pode-se usar o parâmetro “-C tipo,nível” junto do comando “borg create”.
Os cinco métodos de compressão suportados, cada um com suas vantagens e desvantagens, e que estão além do que possa discutir aqui, são os que seguem:
- lz4 – método padrão – muito rápido porém pouca compressão
- zstd – níveis de 0 a 22 – troca velocidade por maior compressão, este método é preferível em detrimento aos próximos dois)
- zlib – níveis de 0 a 9 (nível padrão é 6) – velocidade intermediária
- lzma – níveis de 0 a 9 (nível padrão é 6) – velocidade rápida
- none – Sem compressão, os dados são salvos na forma original
No exemplo abaixo eu realizo o backup da pasta Músicas, com compressão zstd nível 9 e exibindo as estatísticas do processo ao término.
borg create --stats -C zstd,9 /mnt/backup/borg::musicas1 Músicas
No exemplo acima eu ainda usei o parâmetro “–stats” para ver uma estatística da execução no final do processo, mas ele não é obrigatório ao comprimir dados.
Eu poderia usar ainda o parâmetro “–progress” para exibir o progresso do backup em execução e não morrer de ansiedade enquanto o processo leva vários minutos ou até horas para ser concluído e emitir alguma mensagem dizendo que está tudo bem.
Há também um punhado de outros parâmetros que você poderá conhecer a partir da documentação oficial do Borg Backup, ou somente chamando por sua ajuda local com o parâmetro “–help”.
borg --help
borg create --help
Visualizando informações seus backups
Para verificar seus backups você usa o comando “list” como no exemplo abaixo onde serão listados todos os backups realizados no repositório /mnt/backup/borg.
borg list /mnt/backup/borg
Da mesma forma se você quiser listar os arquivos que foram copiados em determinado backup (basta informá-lo após o caminho para o repositório).
borg list /mnt/backup/borg::musicas1
Observe que para listar os meus backups eu apenas informei o caminho para o repositório, enquanto que para listar o conteúdo de um destes backups, eu informei o “caminho_repositorio::meu_backup”.
Esta listagem é útil principalmente para determinar o caminho onde está o arquivo que você deseja recuperar, ou apenas para conferir se durante o backup, o seu filtro não ignorou o arquivo mais importante que você deveria manter cópias de segurança.
Para informações sobre o uso de espaço seja para todo o repositório ou apenas por este backup, você pode usar o comando “info”.
Veja como fica para saber o espaço consumido pelo meu backup chamado “musica1”:
borg info /mnt/backup/borg::musicas1
Recuperando arquivos do backup
Recuperar dados de um backup é simples. No exemplo a seguir estou recuperando o arquivo praia-09987.jpg no backup docs1.
borg extract /mnt/backup/borg::docs1 Documentos/praia-09987.jpg
Veja que além do caminho do repositório e do nome do backup, é necessário especificar o caminho completo para o arquivo a ser recuperado.
Ao término do processo a pasta “Documentos” será criada com o seu arquivo lá dentro.
Para recuperar mais de um arquivo na mesma linha de comandos podemos especificá-los em sequência, usar caracteres curingas ou expressão regular como nos exemplos abaixo:
borg extract /mnt/backup/borg::docs1 'sh:Documentos/*.doc'
Neste primeiro exemplo (acima) estou usando caracteres curingas para especificar todos os arquivos de extensão “.doc”. Veja o prefixo “sh:” para especificar o uso de padrão “shell”.
borg extract /mnt/backup/borg::docs1 're:Documentos/a([0-9]{1,})\.png'
Neste segundo exemplo (acima) estou usando expressão regular (prefixo “re:”) para determinar que apenas os arquivos iniciando com a letra “a” seguida de números e extensão .png.
Montando o repositório como disco local
Se você precisar recuperar ou executar qualquer tipo de tarefa em um grande conjunto de arquivos é possível montar o seu backup (em modo read only) como se fosse um disco externo, usando o módulo fuse do kernel.
A vantagem disso é poder navegar no seu backup e copiar arquivos, como se você um disco local montado somente para leitura (algo como os CDs e DVDs usados em décadas passadas) usando qualquer ferramenta de sua preferência.
A desvantagem é que a performance não é das melhores então é preciso ter um pouco de paciência, mesmo em uma situação de emergência e precisando daquele conjunto de arquivos “para ontem” a sua urgência não vai acelerar o acesso aos seus arquivos.
No exemplo abaixo estou montando o backup “musicas1” na pasta “temp” e poderei ter acesso aos arquivos.
mkdir temp
borg mount /mnt/backup/borg::musicas1 temp
Você poderá entrar na pasta temp e executar qualquer comando que usaria em um disco normal (lembrando que este será um volume somente para leitura).
Ao término das suas atividades, certifique-se de que nenhuma ferramenta ou aplicação esteja acessando o volume, e o desmonte com o comando fusermount como abaixo:
fusermount -u temp
Outras tarefas e informações úteis
Criar, visualizar e restaurar backup é apenas a parte mais importe de uma rotina de sysadmin no que tange a backups, mas há outras tarefas que em certos momentos são necessárias como as que seguem.
Renomeando um backup
Caso você precise renomear um backup por qualquer razão, isso é possível com o comando “rename”.
borg rename /mnt/backup/borg::docs1 docs-20161230
Repositórios remotos
Como visto nos exemplos anteriores o caminho para backup é sempre especificado por dois elementos separados por “::”. Como no exemplo abaixo:
/caminho/repositorio::etiqueta
- “/caminho/repositorio” (à esquerda do “::”) é o diretório preparado com o comando “borg init” e onde ficarão seus backups, e
- “etiqueta” (à direita do “::”) é o nome dado ao seu backup.
Um backup seguro idealmente estará em outro equipamento físico, não apenas outro disco, mas em outro computador, outra sala, outro prédio … se possível em outro planeta.
O Borg permite isso a partir do acesso remoto a outra máquina via protocolo SSH. Dessa forma, basta que você tenha uma conta SSH para acessar outra máquina e então será possível ter backups fora da máquina a ser protegida.
Seguindo os exemplos anteriores suponhamos que eu precise fazer um backup do notebook no meu desktop (onde já tenho um repositório pronto).
A partir do meu notebook e executo o comando abaixo:
borg create welrbraga@desktop/mnt/backup/borg::notebook-20161230 ~
O borg pedirá a senha SSH do usuário welrbraga do Desktop e em seguida pedirá a senha do repositório /mnt/backup/borg.
Observe que para isso funcionar o usuário welrbraga (no desktop) deverá ter permissão de escrita no diretório /mnt/backup/borg e que deverá ser um repositório Borg já criado anteriormente com o comando “borg init”.
Um dica aqui, se você pensa em automatizar as coisas, faça a autenticação SSH criando um par de certificados de chave pública. e ainda mantenha a senha do seu repositório Borg em variável de ambiente como veremos adiante.
Quebrando o lock após uma falha
É possível que após uma falha ao executar um backup (a máquina travou, faltou energia, acabou o espaço etc) o seu repositório fique bloqueado e qualquer ação sobre ele resulte em uma mensagem de erro como a mostrada abaixo:
Failed to create/acquire the lock >>> /mnt/backup/borg/lock.exclusive (timeout).
Caso isso ocorra, apenas mande o borg destravar o repositório.
borg break-lock /mnt/backup/borg
Decore ou anote esta linha de comandos em algum lugar onde você possa consultá-la quando bater o desespero e acredite você precisará dela muitas vezes ainda.
Nomes para backups automatizados
Ao criar backups é possível usar algumas “macros” para definir nomes automáticos para os backups. São elas: {now}, {utcnow}, {fqdn}, {hostname}, {user}, {pid}, {borgversion}.
Assim, eu posso criar um script de backup genérico contendo apenas o comando abaixo, e que criará um novo backup com o nome da máquina seguido da data/hora atual, todas as vezes que for invocado:
borg create /mnt/backup/borg::{hostname}-{now} ~
Fica uma dica bonus aqui, que quando usar a macro “{now}” você pode personalizar o formato da data/hora. Assim: “{now:%d-%m-%y}” ou “{now:%H%M%S}”. Os códigos são os mesmos usados pelo comando “date” que você já deve conhecer do ambiente Linux.
Ignorando arquivos durante o backup
Normalmente não faz sentido realizar backups da lixeira, pasta de Thumbnails, Downloads, cache de navegadores e outras aplicações, arquivos terminados em “.bak”, “bk”, “.tmp”, iniciados ou terminados “~” (geralmente arquivos temporários) etc.
Há uma lista imensa de itens que não precisam ser guardados em backups e ela não é padronizada. Por isso o Borg oferece dois argumentos que nos permite selecionar o que não queremos salvar no backup:
–exclude (ou -E) – Indica um padrão para ser desprezado
–exclude-from – Indica um arquivo com a lista de padrões a serem desconsiderados (como o arquivo .gitignore).
No exemplo abaixo estou realizando o backup do meu home (usei a macro “~” para especificar isso) porém desconsiderando as pastas da Lixeira e de thumbnails.
$ borg create /mnt/backup/borg::{hostname}-{now} ~ -E '.thumbnails' -E '.local/share/Trash'
Eu poderia ter criado um arquivo contendo ambos os caminhos e então referenciar este arquivo com o argumento “–exclude-from”. Esta opção é extramente útil se você tiver uma lista muito grande de itens a serem ignorados.
Variáveis de ambiente
O borg possui algumas variáveis de ambiente muito úteis para simplificar o trabalho de digitar a mesma coisa várias vezes.
Uma das minhas preferidas é a variável “BORG_REPO”. Toda vez que preciso realizar um conjunto de tarefas em um dado repositório, que ainda não tenha automatizado com algum script, eu faço uso desta variável que define o caminho para o repositório.
Se lá no começo deste texto eu tivesse digitado a linha abaixo uma vez, isso teria simplificado o meu trabalho, permitindo ignorar a referência ao repositório.
export BORG_REPO="/mnt/backup/borg"
Digitando apenas o nome do backup parecido por “::”, como em “::docs1”, “::musicas”, “::{hostname}-{now}” etc.
Ou seja, ao invés de:
borg create /mnt/backup/borg::musica1 Músicas
borg create /mnt/backup/borg::docs1 Documentos
Eu poderia usar apenas:
borg create ::musica1 Músicas
borg create ::docs1 Documentos
Essa mudança pode até parecer pouca coisa nestes exemplos simples, mas no dia a dia, quando você precisar digitar vários comandos para lidar com o seu repositório, você vai agradecer por não ter que digitar o caminho dele.
Outra variável que não posso deixar de mencionar, mas deve ser usada com cautela, é a “BORG_PASSPHRASE” que salva a senha do seu repositório em uma variável de ambiente evitando que ela seja pedida todas as vezes que você executar um comando.
Particularmente eu não sou muito fã dela. A menos que seja para efeitos de teste ou haja outros mecanismos de proteção, como por exemplo se o backup está em outra máquina acessível de forma restrita e exclusivamente por SSH etc.
Mas se estiver disposto a usá-la, simplesmente adicione-a ao seu ambiente como faria com qualquer outra:
export BORG_PASSPHRASE="senha-do-meu-repositorio-de-backup"
Em substituição a esta variável, no meu backup “oficial” eu prefiro passar a responsabilidade pela autenticação para algum sistema de gestão de segredos ou cofre de senhas.
Isso é feito informando ao Borg a linha de comando que retorna a senha do seu repositório. E esta linha de comandos é informada na variável BORG_PASSCOMMAND. O que nos leva a outro patamar de proteção das senhas no Borg.
Eu vou deixar então dois exemplos de como usar esta variável a seu favor. Vejamos.
Salvando e acessando a sua senha do repositório de forma segura com BORG_PASSCOMMAND
Digamos então que eu tenha salvo a minha senha em um arquivo texto mascarado com hash base64.
Para título de exemplo, minha senha será “senhasecretarepositorio” e ficará em um arquivo chamado borgpass.txt
Para converter em um hash base64 eu uso o comando:
printf "senhasecretarepositorio" | base64 >borgpass.txt
O arquivo borgpass.txt seria criado e seu conteúdo será este aqui:
c2VuaGFzZWNyZXRhcmVwb3NpdG9yaW8=
Este código retornado é a minha senha mascarada em formato base64. Mas atenção ela não está criptografada ela só está mascarada. Um processo que simplifica os caracteres usados na string digitada e que dá a impressão de que é algo criptografado.
Embora o processo de reversão seja simples, embaralhada desta forma ela estará mais segura do que simplesmente salva em texto plano e visível.
E para que o Borg saiba o que fazer para obter a sua senha, basta que informemos o comando certo através da variável BORG_PASSCOMMAND.
export BORG_PASSCOMMAND=”base64 -d borgpass.txt”
Com esta variável publicada em seu ambiente, sempre que o Borg precisar acessar seu repositório, ele vai executar este comando e usar a saída como senha.
Um nível acima de segurança – usando cofres de senha
Salve a sua senha em um cofre de senhas e recupere-a pela linha de comandos com toda a segurança.
Este é o método que eu prefiro, recomendo atualmente. Eu uso o Bitwarden como cofre de senhas. Ele é gratuito, opensource, está disponível no Github e para inúmeras plataformas, além de possuir uma ferramenta de linha de comandos sensacional para este propósito.
Para este uso eu salvaria a senha do repositório no meu cofre de senhas usando o desktop, a interface web, celular … tanto faz, e em seguida após obter o identificador único desta senha, eu poderia passar na variável BORG_PASSCOMMAND, o comando do Bitwarden que retorna a minha senha.
Ficaria então algo como:
export BORG_PASSCOMMAND="bw get password 4df5d8d8-d8ce-44fe-a19a-af2401c5623f"
Feito isso, todas as vezes que eu usar o Borg para acessar este repositório, ele abrirá o meu cofre de senhas e procurará pela senha do objeto salvo com aquele identificador que eu passei.
O que isso muda em comparação com outros métodos? Quando eu disse que “ele abrirá me cofre de senhas e procurará pela senha do objeto salvo”, eu apenas simplifiquei o processo.
Na prática – do meu uso – o Bitwarden me pedirá a senha de desbloqueio de cofre e a inserção do meu chaveiro Yubikey para liberar a sessão. Só então será possível obter qualquer senha do meu cofre.
Eu poderia definir outros métodos de autenticação como segurança para o meu cofre, como pedir um código OTP, o envio de um código por e-mail, SMS, confirmação no celular, depende de como o meu cofre esteja configurado e dos recursos que ele possua.
Com um script mais elaborado, ao invés de chamar o cofre diretamente, É possível até mesmo que a senha do cofre seja pedida uma só vez ao iniciar o seu sistema e nada mais. Caso os backups ocorram automaticamente eles não pedirão mais sua senha até que você reinicie o computador ou feche o cofre.
Claro que o Bitwarden não é o único a oferecer este recurso, outros sistemas como o Keepass, Lastpass, Passmanager entre outros podem fazer o mesmo por você.
Removendo backups antigos
O algoritmo do Borg faz o seu disco de backup render espaço quase que forma milagrosa, mas em algum momento o espaço chegará ao fim ou próximo disso e então será a hora de remover aqueles backups mais antigos ou usar algum protocolo de retenção que você prefira. Para isso existe o comando prune.
Vale lembrar antes de qualquer exemplo que este é um comando extremamente perigoso afinal de contas você poderá destruir todo o seu backup se informar algo errado.
Os filtros disponíveis são os argumentos abaixo:
- -H – Horário
- -d – diário
- -w – semanal
- -m – mensal
- -y – anual
- -P – prefixo
Agora digamos que eu queira fazer uma faxina no meu repositório mantendo um backup de cada um dos 5 últimos dias e um do mês anterior.
borg prune --list -v -n -d5 -m1
Em outro outro caso, suponha agora que eu queira manter apenas um backup de cada uma das últimas 10 semanas.
borg prune --list -v -n -w10
Simples assim. 🙂 Observe no entanto o parâmetros em negrito (–list -v -n).
Eles pedem que o borg prune seja executado em modo “dry run” (simulação – nada será removido de fato), verboso e listando tudo. Isso é extremamente útil para sabermos o que de fato será excluído.
Para remover de verdade mesmo, remova estes parâmetros, ou ao menos o “-n”, mas fica dica: Sempre use-os quando estiver na dúvida se o seu filtro está correto, ou do contrário você poderá remover irreversivelmente o que não deveria.
Outra observação aqui. Veja que eu não informei o caminho para o repositório, partindo do pressuposto que a variável “BORG_REPO” foi declarada antes de executar os comandos acima.
Caso não a tenha declarado, bataria informar o caminho nesta mesma linha de comandos.
Migrando backups entre repositórios
Eventualmente você irá precisar liberar espaço mas não vai querer excluir seus backups mas por padrão a única alternativa oficial para isso é aumentar o seu volume de backups.
Seja usando discos virtuais, RAID, ou mesmo movendo tudo para outro disco de maior capacidade.
Em algum momento nestes longos oito anos usando Borg eu já passei por esta situação algumas vezes até que resolvi dar uma solução mais “elegante”.
Eu crie um script chamado “borg-migrate” e que permite mover backups de um repositório Borg para outro, e desta forma, quando o meu disco de backup principal está muito cheio eu uso esta ferramenta para mover os backups mais antigos para um segundo repositório onde ele ficará por mais alguns anos.
Eu disponibilizei este script como um projeto público no Github e que pode ser copiado, modificado, melhorado e usado conforme quiser.
A instalação é simples, baixe o arquivo, ajuste as permissões e o copie para uma pasta de sistema.
curl -L https://raw.githubusercontent.com/welrbraga/borg-migrate/refs/heads/main/borg_migrate.sh -o borg-migrate
sudo install --mode=0755 borg-migrate /usr/local/bin/
Para usá-lo, após ajustar as variáveis BORG_REPO e BORG_PASSCOMMAND para ambos os repositórios, apenas execute o comando:
borg-migrate backup-a-ser-migrado
Consulte as instruções no repositório do Github para obter informações atualizadas sobre o projeto.
Mais!?
Não há muito mais a se dizer exceto deixar a recomendação de leitura do manual [1] e fazer alguns testes práticos.
Em casa substitui meu velho script de backups baseado em rsync e hardlinks pelo Borg há alguns anos e que realiza um trabalho muito mais rápido e limpo.
Para se ter uma ideia da vantagem que foi esta mudança, desde que comecei a usar o Borg na prática de verdade (por volta da segunda quinzena de dez/2016) até hoje, tenho cerca de 30 backups que se fossem mera cópias de pastas ocupariam absurdos 5.5TB.
Mas graças aos recursos de compressão e deduplicação do Borg todos eles ocupam pouco menos de 315GB do 1TB disponível em meu HD externo para backups e cada rotina de “borg create” (fazer o backup) para meus 200GB de dados, não costuma durar mais do que 1 ou 2 minutos como se vê nesta saída do “borg info” que mostra informações sobre determinado arquivo de backup.
$ borg info ::weldesk-wbraga-20170221-0825
Enter passphrase for key /media/veracrypt2/borg:
Name: weldesk-wbraga-20170221-0825
Fingerprint: 528a98eafa68b8758b87b4a40bf6b8cbddef200baf173e206d0a02b531f07ec1
Hostname: weldesk
Username: wbraga
Time (start): Tue, 2017-02-21 08:25:48
Time (end): Tue, 2017-02-21 08:26:52
Command line: /usr/bin/borg create -v --stats --progress --compression=lz4 --exclude-from /tmp/filegUZ0CV ::{hostname}-{user}-{now:%Y%m%d-%H%M} .
Number of files: 176388
Original size Compressed size Deduplicated size
This archive: 206.96 GB 176.94 GB 18.81 MB
All archives: 5.53 TB 4.73 TB 313.57 GB
Unique chunks Total chunks
Chunk index: 380980 7309240
Uma atualização do comentário acima:
No momento em que reviso este texto (Mar/2025), sim, após quase 8 anos de uso do Borg, meu disco de backups com 1TB de capacidade ainda é usado para manter as minhas atuais 240 sessões de backup ocupando cerca de 850GB (segundo informações do comando df), o Borg me aponta que eu tenho o equivalente a quase 79TB de backups armazenados. Veja só a saída do comando “borg info” para um dos meus primeiros backups e que ainda está salvo.
Archive name: weldesk-wbraga-20161229-2201
Archive fingerprint: 75206025e328c35069d95ecf57a77dd4aa5c22c154f1993631aaa97835ccf5ef
Comment:
Hostname: weldesk
Username: wbraga
Time (start): Thu, 2016-12-29 22:01:07
Time (end): Thu, 2016-12-29 22:01:29
Duration: 22.11 seconds
Number of files: 170596
Command line: /usr/bin/borg create -v --stats --progress --compression=lz4 --exclude-from /tmp/fileYFpLvm '::{hostname}-{user}-{now:%Y%m%d-%H%M}' .
Utilization of maximum supported archive size: 0%
------------------------------------------------------------------------------
Original size Compressed size Deduplicated size
This archive: 241.32 GB 199.47 GB 62.91 GB
All archives: 78.33 TB 72.83 TB 892.49 GB
Unique chunks Total chunks
Chunk index: 4134868 293335021
A mágica para fazer 79TB de dados caberem em um disco de 1TB e ainda sobrar espaço na verdade é bem simples e usada por muitas ferramentas de backup existentes por ai. Este é o resultado da deduplicação, que evita salvar duas vezes o mesmo conteúdo e a compressão que tenta salvar o conteúdo dos seus arquivos usando um espaço menor. Nada realmente mágico ou exclusivo, mas ainda assim, surpreendente.
[1] Documentação oficial do Borg. http://borgbackup.readthedocs.io