Ubuntu Backup
Backup é uma cópia dos seus arquivos guardada em outro lugar, para quando o disco queimar, o notebook for roubado ou você apagar algo sem querer. Nesta aula você vai copiar a pasta pessoal para um HD externo com rsync, empacotar com tar e, o mais importante, testar se dá para restaurar.
- A regra 3-2-1 e o que vale a pena copiar.
- O
rsyncparte por parte, incluindo a "barra final" que confunde todo mundo. - Fazer backups com data no nome usando
tare$(date +%F). - Restaurar um arquivo e conferir se a cópia está completa.
- Os erros que fazem um backup falhar em silêncio.
Antes dos comandos: o que é um bom backup
Um backup só existe de verdade quando você já conseguiu restaurar algo dele. Uma regra simples, usada por profissionais, é a 3-2-1:
| Número | Regra | Exemplo da Ana |
|---|---|---|
| 3 | Tenha 3 cópias dos dados (o original + 2 backups). | Notebook + HD externo + nuvem. |
| 2 | Em 2 tipos de mídia diferentes. | SSD do notebook e HD externo. |
| 1 | 1 cópia fora de casa. | Um serviço de nuvem ou um HD na casa de um parente. |
O que copiar
| O quê | Onde fica | Precisa? |
|---|---|---|
| Seus arquivos | /home/ana | Sim, é o mais importante. |
| Configurações do sistema que você mudou | /etc | Em servidores, sim. |
| Lista dos programas instalados | Gerada com apt-mark showmanual | Sim; ocupa poucos KB. |
| Caches | ~/.cache | Não; o sistema recria sozinho. |
| O próprio Ubuntu | /usr, /bin… | Não; é mais rápido reinstalar. |
rsync: copiar só o que mudou
rsync vem de remote sync, "sincronização remota". Ele copia arquivos de um lugar para outro, local ou por rede. A grande vantagem sobre o cp: na segunda vez, ele copia só o que mudou. Um backup de 50 GB que levou uma hora passa a levar segundos.
- rsync
- O programa.
- -a
- Archive: copia tudo (subpastas, permissões, datas, links), igual ao original.
- -v
- Verbose: lista cada arquivo copiado.
- -h
- Tamanhos legíveis no resumo final.
- ~/Documentos/
- A origem. A barra final importa (veja abaixo).
- /media/ana/BACKUP/Documentos/
- O destino: o HD externo.
$ rsync -avh ~/Documentos/ /media/ana/BACKUP/Documentos/ sending incremental file list created directory /media/ana/BACKUP/Documentos « o destino não existia; ele criou ./ acesso.log notas.txt relatorio.odt projetos/ projetos/backup.sh projetos/site/ projetos/site/index.html projetos/site/style.css sent 10,24K bytes received 191 bytes 20,86K bytes/sec total size is 9,41K speedup is 0,90
| Linha | Significado |
|---|---|
sending incremental file list | "Enviando a lista de arquivos aos poucos". O rsync responde em inglês. |
| Nomes de arquivos | O que foi copiado agora. |
sent … received … | Quantos bytes foram enviados e recebidos. |
speedup is … | Quanto o rsync economizou. Na segunda execução, esse número fica bem maior que 1. |
Agora a Ana cria um arquivo novo e roda o mesmo comando de novo:
$ echo "reunião às 15h" > ~/Documentos/lembrete.txt $ rsync -avh ~/Documentos/ /media/ana/BACKUP/Documentos/ sending incremental file list lembrete.txt « só o que mudou sent 312 bytes received 38 bytes 700,00 bytes/sec total size is 9,43K speedup is 26,94
A barra final na origem
Este é o detalhe que mais confunde no rsync. Uma barra no fim da origem muda o resultado:
| Comando | Resultado no destino |
|---|---|
rsync -a ~/Documentos/ /backup/ | Copia o conteúdo: /backup/notas.txt |
rsync -a ~/Documentos /backup/ | Copia a pasta: /backup/Documentos/notas.txt |
Leia a barra como "o que está dentro de". No destino, a barra não faz diferença.
Ver antes de fazer: -n
A opção -n (de dry run, "ensaio") mostra o que seria feito, sem copiar nada. Use sempre que mudar o comando:
$ rsync -avhn ~/Documentos/ /media/ana/BACKUP/Documentos/ sending incremental file list sent 312 bytes received 20 bytes 664,00 bytes/sec total size is 9,43K speedup is 28,40 (DRY RUN) « (DRY RUN): nada foi copiado
Espelho exato: --delete
Por padrão, se você apaga um arquivo no notebook, ele continua no backup. Com --delete, o rsync apaga do destino o que não existe mais na origem, deixando um espelho exato.
$ rm ~/Documentos/lembrete.txt $ rsync -avh --delete ~/Documentos/ /media/ana/BACKUP/Documentos/ sending incremental file list deleting lembrete.txt « apagado também do backup ./ sent 290 bytes received 40 bytes 660,00 bytes/sec total size is 9,41K speedup is 28,52
Se você trocar origem e destino de lugar, o --delete apaga os seus arquivos originais. Se você apagar algo sem querer e rodar o backup em seguida, a cópia também some. Rode antes com -n e mantenha mais de um backup.
Deixar pastas de fora: --exclude
$ rsync -avh --delete --exclude='.cache' --exclude='Downloads' ~/ /media/ana/BACKUP/home/
Cada --exclude recebe um nome ou padrão. As aspas evitam que o shell expanda curingas antes da hora.
Ver o progresso: --progress
Em arquivos grandes, --progress (ou -P) mostra a porcentagem e a velocidade de cada arquivo:
$ rsync -avh --progress ~/Imagens/ /media/ana/BACKUP/Imagens/
sending incremental file list
ferias.jpg
2,10M 100% 95,24MB/s 0:00:00 (xfr#1, to-chk=1/3)
perfil.png
102,40K 100% 4,51MB/s 0:00:00 (xfr#2, to-chk=0/3)
sent 2,20M bytes received 57 bytes 4,40M bytes/sec
total size is 2,20M speedup is 1,00
tar: um pacote com data no nome
O rsync mantém um espelho atualizado. Às vezes você quer fotografias de cada dia, para poder voltar a uma versão antiga. Para isso, empacote com tar e coloque a data no nome.
Primeiro, entenda o $(date +%F). O date +%F imprime a data no formato ano-mês-dia, e o $( ) coloca essa saída dentro de outro comando:
$ date +%F 2026-10-15 $ echo "backup-$(date +%F).tar.gz" backup-2026-10-15.tar.gz
- tar
- O programa que empacota (veja tar, zip, gzip).
- -czf
c= criar,z= compactar com gzip,f= o próximo nome é o arquivo.- /media/ana/BACKUP/documentos-$(date +%F).tar.gz
- O arquivo a criar, com a data de hoje no nome.
- -C ~
- Entra na pasta pessoal antes de empacotar, para os caminhos ficarem curtos.
- Documentos
- O que empacotar.
$ tar -czf /media/ana/BACKUP/documentos-$(date +%F).tar.gz -C ~ Documentos $ ls -lh /media/ana/BACKUP/*.tar.gz -rw-rw-r-- 1 ana ana 4,1K Oct 13 22:00 /media/ana/BACKUP/documentos-2026-10-13.tar.gz -rw-rw-r-- 1 ana ana 4,1K Oct 14 22:00 /media/ana/BACKUP/documentos-2026-10-14.tar.gz -rw-rw-r-- 1 ana ana 4,2K Oct 15 10:30 /media/ana/BACKUP/documentos-2026-10-15.tar.gz
Para ver o que tem dentro sem extrair, use -t (de list):
$ tar -tzf /media/ana/BACKUP/documentos-2026-10-15.tar.gz Documentos/ Documentos/acesso.log Documentos/notas.txt Documentos/relatorio.odt Documentos/projetos/ Documentos/projetos/backup.sh Documentos/projetos/site/ Documentos/projetos/site/index.html Documentos/projetos/site/style.css
Missão: o simulador não tem tar, mas tem cp e $( ). Copie a pasta Documentos para dentro de backups, numa pasta com o nome da data de hoje. Dica: cp -r Documentos backups/$(date +%F). Depois confira com ls backups/*.
Testar a restauração
Um backup que nunca foi restaurado é só uma esperança. Faça o teste uma vez por mês.
-
Restaure um arquivo do espelho do rsync para uma pasta de teste, sem sobrescrever o original:
$ mkdir -p ~/teste-restauracao $ rsync -avh /media/ana/BACKUP/Documentos/notas.txt ~/teste-restauracao/ sending incremental file list notas.txt sent 191 bytes received 35 bytes 452,00 bytes/sec total size is 71 speedup is 0,31 $ cat ~/teste-restauracao/notas.txt Comprar café Ligar para o João Estudar Ubuntu Fazer backup das fotos
-
Compare a pasta inteira com o original. O
diff -rcompara pastas recursivamente; se não mostrar nada, são idênticas:$ diff -r ~/Documentos /media/ana/BACKUP/Documentos $ echo $? 0 « 0 = idênticas
-
Extraia um pacote tar numa pasta separada, com
-x(extrair) e-C(onde):$ tar -xzf /media/ana/BACKUP/documentos-2026-10-14.tar.gz -C ~/teste-restauracao $ ls ~/teste-restauracao Documentos notas.txt
Apague a pasta de teste quando terminar:
rm -r ~/teste-restauracao.
A lista de programas instalados
Em vez de copiar os programas, guarde a lista deles. O apt-mark showmanual mostra os pacotes que foram instalados de propósito (e não como dependência):
$ apt-mark showmanual > /media/ana/BACKUP/pacotes.txt $ wc -l /media/ana/BACKUP/pacotes.txt 157 /media/ana/BACKUP/pacotes.txt
Num Ubuntu novo, reinstale tudo de uma vez:
$ xargs sudo apt install -y < /media/ana/BACKUP/pacotes.txt
Para Snaps, guarde também a saída de snap list.
Formas diferentes de fazer backup
| Ferramenta | Como é | Melhor quando… |
|---|---|---|
rsync | Espelho atualizado; rápido nas próximas vezes | Backup diário da pasta pessoal para um HD ou outro computador. |
tar + data | Um pacote por dia | Você quer voltar a versões antigas de poucos arquivos. |
| App Backups (Déjà Dup) | Gráfico, agendado, com versões e criptografia | Desktop, para quem prefere clicar. |
| Timeshift | "Fotografias" do sistema (não da pasta pessoal) | Voltar o sistema depois de uma atualização que deu problema. |
restic ou borg | Versões, deduplicação e criptografia, inclusive na nuvem | Servidores e quem quer o melhor dos dois mundos. |
Para agendar o backup e não depender da memória, veja Agendar Tarefas e o projeto Backup Automático.
Quando não funciona
$ rsync -avh ~/Documentos/ /media/ana/BACKUP/Documentos/ sending incremental file list created directory /media/ana/BACKUP/Documentos …
O que aconteceu: o HD externo não estava montado. O rsync criou a pasta /media/ana/BACKUP no próprio SSD e copiou tudo para lá. O "backup" está no mesmo disco do original, e pode até enchê-lo.
Como confirmar: findmnt /media/ana/BACKUP não mostra nada.
Como evitar: em scripts, teste antes com mountpoint, que devolve 0 só se a pasta for um ponto de montagem:
$ mountpoint -q /media/ana/BACKUP && rsync -avh ~/Documentos/ /media/ana/BACKUP/Documentos/ || echo "HD de backup não está montado!" HD de backup não está montado!
$ rsync -avh ~/Documento/ /media/ana/BACKUP/Documentos/ sending incremental file list rsync: [sender] change_dir "/home/ana/Documento" failed: No such file or directory (2) sent 19 bytes received 12 bytes 62,00 bytes/sec total size is 0 speedup is 0,00 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1356) [sender=3.4.1]
O que aconteceu: a origem foi digitada errada (faltou o "s"). Nada foi copiado e o código de saída é 23.
Como resolver: use Tab para completar os caminhos. Em scripts, confira o código de saída do rsync.
O que aconteceu: você esqueceu a barra final na origem (rsync -a ~/Documentos /backup/Documentos/), e o rsync copiou a pasta para dentro do destino.
Como resolver: apague a pasta duplicada e repita com a barra: ~/Documentos/. Use -n antes para conferir.
O que aconteceu: vários arquivos de /etc só o root pode ler. O rsync copia o resto e termina com code 23.
Como resolver: para pastas do sistema, use sudo rsync -a /etc/ /media/ana/BACKUP/etc/.
O que aconteceu: o FAT32 não aceita arquivos com mais de 4 GB, e o rsync reclama ao copiar uma ISO ou um vídeo grande. Ele também não guarda permissões do Linux.
Como resolver: formate o disco de backup em ext4 (se ele só for usado no Linux) ou exFAT (se precisar abrir no Windows). Veja Particionar e Formatar.
Referência do rsync
| Opção | Descrição | Exemplo |
|---|---|---|
-a | Modo arquivo: recursivo e preserva permissões, datas e links | rsync -a orig/ dest/ |
-v | Lista os arquivos copiados | rsync -av … |
-h | Tamanhos legíveis | rsync -avh … |
-n | Ensaio: mostra sem fazer | rsync -avhn … |
-P / --progress | Mostra o progresso de cada arquivo | rsync -avhP … |
-z | Compacta durante a transferência pela rede | rsync -avz … servidor: |
--delete | Apaga do destino o que não existe mais na origem | rsync -a --delete … |
--exclude | Ignora um nome ou padrão | --exclude='.cache' |
-A -X | Preserva ACLs e atributos estendidos | rsync -aAX … |
Para copiar para outro computador pela rede, veja scp e rsync.
Exercícios
1. Ensaio
Complete para ver o que o rsync faria, sem copiar nada:
2. Data no nome
Complete para o nome do arquivo ter a data de hoje no formato 2026-10-15:
3. Espelho exato
Complete para o destino ficar idêntico à origem, inclusive apagando o que você apagou:
4. Qual a diferença entre rsync -a ~/Fotos/ /bk/ e rsync -a ~/Fotos /bk/?
5. Quando um backup pode ser considerado confiável?
Resumo
- Regra 3-2-1: três cópias, dois tipos de mídia, uma fora de casa.
rsync -avh origem/ destino/copia só o que mudou; a barra na origem significa "o conteúdo de".- Teste com
-nantes; use--deletecom cuidado. tar -czf nome-$(date +%F).tar.gz pastacria uma versão por dia.- Restaure de vez em quando e compare com
diff -r. Confira commountpointse o HD está mesmo conectado.