De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 8 de julho de 2026
Desde os primeiros sistemas Unix, fazer backup sempre significou copiar arquivos. Ferramentas como tar, cpio, dump e, mais recentemente, rsync, tornaram-se parte da rotina dos administradores porque cumpriam muito bem essa tarefa. Apesar das diferenças entre elas, todas compartilham uma característica importante: trabalham sobre arquivos já existentes no sistema de arquivos. Para decidir o que precisa ser copiado, essas ferramentas percorrem diretórios, verificam datas de modificação, calculam diferenças e iniciam então a transferência dos dados.
Essa abordagem continua perfeitamente válida e dificilmente deixará de ser utilizada. Entretanto, quando o volume de dados cresce para centenas de gigabytes ou vários terabytes, suas limitações começam a aparecer. Ainda que apenas alguns arquivos tenham sido modificados, é necessário percorrer toda a estrutura de diretórios para descobrir o que mudou. Em servidores que armazenam milhões de arquivos, essa etapa pode consumir mais tempo do que a própria cópia.
O Btrfs segue um caminho completamente diferente porque conhece a estrutura interna do sistema de arquivos. Em vez de analisar arquivos individualmente, ele trabalha sobre snapshots. Como cada snapshot representa o estado completo de um subvolume em determinado instante, o sistema é capaz de determinar exatamente quais blocos foram alterados entre duas versões consecutivas. Não há necessidade de comparar diretórios nem verificar atributos de cada arquivo. As informações já fazem parte da própria estrutura do sistema de arquivos.
Os comandos btrfs send e btrfs receive foram desenvolvidos justamente para explorar essa característica.
Suponha que um snapshot, /snapshots/home-001, tenha sido criado após a instalação inicial de um servidor.
Esse snapshot pode ser transferido integralmente para outro disco ou para outro servidor utilizando um pipeline bastante simples:
$ sudo btrfs send /snapshots/home-001 | sudo btrfs receive /backup
O comando btrfs send produz um fluxo contendo todas as operações necessárias para reconstruir aquele snapshot. Esse fluxo é enviado diretamente para a entrada padrão do comando btrfs receive, que recria o snapshot no destino mantendo sua estrutura original.
A principal vantagem desse mecanismo aparece quando novos snapshots passam a ser produzidos periodicamente. Imagine que, após um dia de trabalho, seja criado um segundo snapshot, /snapshots/home-002.
Durante esse intervalo, apenas alguns documentos foram modificados. Em um procedimento tradicional de backup, ainda seria necessário percorrer toda a árvore de diretórios para localizar essas alterações. Com o Btrfs, basta informar qual é o snapshot de origem.
$ sudo btrfs send \ -p /snapshots/home-001 \ /snapshots/home-002 | \ sudo btrfs receive /backup
A opção -p informa que home-001 é o snapshot pai. A partir desse momento, o Btrfs transmite apenas as diferenças entre os dois snapshots. Se somente cinquenta megabytes foram alterados em um conjunto de dados de dois terabytes, apenas esses cinquenta megabytes serão enviados ao destino.
Essa forma de trabalhar produz ganhos significativos quando os backups precisam atravessar uma rede. Um servidor remoto deixa de receber repetidamente grandes volumes de dados praticamente inalterados e passa a receber apenas as modificações ocorridas desde a última sincronização. Em conexões de menor velocidade, a diferença é ainda mais evidente. Operações que poderiam consumir horas passam a ser concluídas em poucos minutos, reduzindo tanto o tempo de execução quanto a utilização da largura de banda disponível.
Outra consequência importante é a possibilidade de manter réplicas praticamente idênticas de um sistema em outro servidor. Como btrfs send produz sua saída na forma de um fluxo de dados, basta direcioná-lo através de uma conexão SSH para que o snapshot seja reconstruído remotamente.
$ sudo btrfs send \ -p /snapshots/home-001 \ /snapshots/home-002 | \ ssh backup@servidor \ sudo btrfs receive /backup
Esse procedimento elimina a necessidade de criar arquivos intermediários ou montar sistemas de arquivos remotos. O fluxo produzido pelo primeiro servidor é interpretado diretamente pelo Btrfs da máquina de destino.
É natural comparar esse mecanismo ao rsync, ferramenta amplamente utilizada para sincronização de diretórios. Embora ambos possam ser empregados para construir estratégias eficientes de backup, eles trabalham em níveis diferentes. O rsync compara arquivos e transmite apenas aqueles que sofreram alterações. O Btrfs, por sua vez, compara snapshots e transmite apenas os blocos efetivamente modificados entre eles. Essa diferença permite que o sistema de arquivos aproveite informações que nenhuma ferramenta externa possui.
Há ainda um benefício frequentemente ignorado. Como todo backup incremental parte de um snapshot, os dados permanecem consistentes durante toda a transferência. Mesmo que usuários continuem editando documentos ou que um banco de dados continue recebendo novas transações, o snapshot representa um estado congelado do sistema naquele instante. O backup não sofre interferência das alterações realizadas após sua criação.
Esse modelo de funcionamento aproxima o backup de um processo de replicação. Em vez de simplesmente copiar arquivos para outro local, o administrador passa a manter uma sequência de snapshots sincronizados entre diferentes máquinas. Cada novo snapshot incorpora apenas as alterações ocorridas desde o anterior, reduzindo drasticamente o volume de dados transferidos e permitindo manter históricos completos de forma bastante eficiente.
Os comandos btrfs send e btrfs receive ilustram bem uma das principais características do Btrfs. Em vez de delegar todas as tarefas a ferramentas externas, o sistema de arquivos incorpora mecanismos que conhecem sua estrutura interna e podem utilizá-la para executar operações de forma muito mais eficiente. Essa integração explica por que o Btrfs consegue oferecer estratégias de backup e replicação difíceis de reproduzir com sistemas de arquivos tradicionais, especialmente em ambientes onde snapshots fazem parte da rotina administrativa.