Backup e recuperação
O backup de dados é um dos aspectos mais importantes da administração do sistema. Este artigo apresenta várias soluções de backup e recuperação no Ubuntu 26.04 para ajudá-lo a escolher a ferramenta certa para suas necessidades.
rsync - Ferramenta de sincronização flexível
rsync é uma ferramenta de sincronização de arquivos rápida e flexível que oferece suporte a transferências incrementais e é uma das ferramentas de backup mais comumente usadas no Linux.
Uso Básico
# Local directory sync
rsync -av /source/directory/ /backup/directory/
# Note: the trailing slash on the source path matters
# /source/dir/ -> syncs the contents of the directory
# /source/dir -> syncs the directory itself (including the directory name)Opções comuns
# -a archive mode (preserves permissions, timestamps, symlinks, etc.)
# -v verbose output
# -z compress during transfer
# -h human-readable output
# --progress show progress
# --delete delete files in the target that don't exist in the source
# Complete local backup command
rsync -avh --progress /home/user/ /backup/home-user/
# Backup with exclusion rules
rsync -avh --progress \
--exclude='.cache' \
--exclude='node_modules' \
--exclude='.local/share/Trash' \
/home/user/ /backup/home-user/
# Using an exclude file
rsync -avh --exclude-from='/home/user/rsync-excludes.txt' \
/home/user/ /backup/home-user/Backup remoto
# Backup to a remote server via SSH
rsync -avz -e ssh /home/user/ user@remote:/backup/home-user/
# Specify SSH port
rsync -avz -e "ssh -p 2222" /home/user/ user@remote:/backup/home-user/
# Restore from a remote server
rsync -avz user@remote:/backup/home-user/ /home/user/
# Use --delete to keep both sides in sync
rsync -avz --delete /home/user/ user@remote:/backup/home-user/Script de backup rsync automatizado
Crie um script de backup:
sudo nano /usr/local/bin/daily-backup.sh#!/bin/bash
# Configuration
SOURCE="/home/"
DEST="/backup/daily"
LOG="/var/log/backup.log"
DATE=$(date +%Y-%m-%d_%H%M%S)
# Create log entry
echo "===== Backup started: $DATE =====" >> "$LOG"
# Execute backup
rsync -avh --delete \
--exclude='.cache' \
--exclude='node_modules' \
--exclude='.local/share/Trash' \
"$SOURCE" "$DEST" >> "$LOG" 2>&1
# Record result
if [ $? -eq 0 ]; then
echo "Backup completed successfully: $(date)" >> "$LOG"
else
echo "Backup failed: $(date)" >> "$LOG"
fisudo chmod +x /usr/local/bin/daily-backup.shAgende com cron:
# Run backup every day at 2 AM
sudo crontab -e
# Add: 0 2 * * * /usr/local/bin/daily-backup.shTimeshift - Instantâneos do sistema
O Timeshift se concentra em instantâneos e recuperação de arquivos do sistema, semelhante à Restauração do sistema do Windows.
Instalação e configuração
# Install Timeshift
sudo apt install timeshift
# Launch the graphical interface
sudo timeshift-gtk
# Create a snapshot via command line
sudo timeshift --create --comments "Before installing NVIDIA driver"
# List all snapshots
sudo timeshift --list
# Restore to a specific snapshot
sudo timeshift --restore --snapshot '2026-03-24_10-00-00'
# Delete a snapshot
sudo timeshift --delete --snapshot '2026-03-24_10-00-00'Configuração de linha de comando
# View current configuration
sudo timeshift --config
# Set snapshot type (RSYNC or BTRFS)
sudo timeshift --snapshot-device /dev/sda2Arquivo de configuração do Timeshift
Editar /etc/timeshift/timeshift.json:
{
"backup_device_uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"parent_device_uuid": "",
"do_first_run": false,
"btrfs_mode": false,
"include_btrfs_home": false,
"schedule_monthly": false,
"schedule_weekly": true,
"schedule_daily": true,
"schedule_hourly": false,
"schedule_boot": false,
"count_monthly": 2,
"count_weekly": 3,
"count_daily": 5,
"count_hourly": 0,
"count_boot": 0,
"exclude": [
"/home/**",
"/root/**"
]
}Modo instantâneo Btrfs
Se o sistema usar o sistema de arquivos Btrfs, o Timeshift poderá aproveitar os instantâneos nativos do Btrfs, que são mais rápidos e usam menos espaço:
# Verify filesystem type
df -T /
# If it's Btrfs, select BTRFS mode in Timeshift
sudo timeshift --btrfsDeja Dup - Ferramenta de backup de desktop
Deja Dup (GNOME Backups) é uma ferramenta de backup fácil de usar para o ambiente de desktop Ubuntu, adequada para usuários pessoais.
Instalação e uso
# Install (usually pre-installed on Ubuntu Desktop)
sudo apt install deja-dupDeja Dup disponibiliza uma interface gráfica, acessível através de “Configurações” ou pesquisando por “Backups” no menu do aplicativo.
Principais recursos:
- Suporta backup em discos locais, unidades externas e armazenamento em rede
- Suporta backup para Google Drive e outro armazenamento em nuvem
- Criptografia automática de backups
- Suporte de backup incremental
- Backups automáticos agendados
Operações de linha de comando
Deja Dup usa duplicidade como backend:
# Manually run a backup
deja-dup --backup
# Restore files
deja-dup --restoreBackup de imagem de disco
Criando imagens de disco com dd
# Create a full disk image
sudo dd if=/dev/sda of=/backup/sda.img bs=4M status=progress
# Compressed image
sudo dd if=/dev/sda bs=4M status=progress | gzip > /backup/sda.img.gz
# Restore from an image
sudo dd if=/backup/sda.img of=/dev/sda bs=4M status=progress
# Restore from a compressed image
gunzip -c /backup/sda.img.gz | sudo dd of=/dev/sda bs=4M status=progressUsando Clonezilla
Clonezilla é uma poderosa ferramenta de clonagem e imagem de disco:
# Install Clonezilla
sudo apt install clonezilla
# It is generally recommended to boot from a Clonezilla Live USB
# Download: https://clonezilla.org/downloads.phpBackup do sistema com tar
# Back up the entire system (excluding unnecessary directories)
sudo tar czpf /backup/system-$(date +%Y%m%d).tar.gz \
--exclude=/backup \
--exclude=/proc \
--exclude=/sys \
--exclude=/dev \
--exclude=/run \
--exclude=/tmp \
--exclude=/mnt \
--exclude=/media \
--exclude=/lost+found \
/
# Restore the system
sudo tar xzpf /backup/system-20260324.tar.gz -C /Backup de banco de dados
MySQL/MariaDB
# Back up a single database
mysqldump -u root -p database_name > /backup/db-$(date +%Y%m%d).sql
# Back up all databases
mysqldump -u root -p --all-databases > /backup/all-db-$(date +%Y%m%d).sql
# Restore a database
mysql -u root -p database_name < /backup/db-20260324.sqlPostgreSQL
# Back up a single database
sudo -u postgres pg_dump dbname > /backup/pg-$(date +%Y%m%d).sql
# Back up all databases
sudo -u postgres pg_dumpall > /backup/pg-all-$(date +%Y%m%d).sql
# Restore
sudo -u postgres psql dbname < /backup/pg-20260324.sqlRecomendações de estratégia de backup
A regra de backup 3-2-1
- 3 cópias dos seus dados (o original + 2 backups)
- 2 mídias de armazenamento diferentes (por exemplo, disco rígido local + armazenamento em nuvem)
- 1 backup externo (proteção contra desastres físicos)
Recomendações por cenário
| Cenário | Ferramentas recomendadas | Frequência de backup |
|---|---|---|
| Usuário pessoal de desktop | Deja Dup + Timeshift | Diariamente / Semanalmente |
| Estação de trabalho de desenvolvimento | rsync + mudança de horário | Diariamente |
| Servidor web | rsync + backup de banco de dados | Diariamente / De hora em hora |
| Servidor de negócios crítico | rsync + instantâneos LVM + backup externo | Tempo real/por hora |
Verificando backups
A verificação regular da integridade do backup é essencial:
# Verify a tar backup
tar tzf /backup/system-20260324.tar.gz > /dev/null
# Verify an rsync backup
rsync -avhn --delete /source/ /backup/ # dry-run to compare differences
# Perform periodic restore drills