restic فقط تغییرات را ذخیره میکند (deduplication)، همهچیز را رمزگذاری میکند و مقصدهای مختلفی را پشتیبانی میکند: پوشهی محلی، سرور SFTP یا فضای ذخیرهسازی S3. در این مثال مقصد یک سرور بکاپ از طریق SFTP است.
۱. نصب و کلید SSH
sudo apt update
sudo apt install -y restic
sudo ssh-keygen -t ed25519 -f /root/.ssh/backup -N ''
sudo ssh-copy-id -i /root/.ssh/backup.pub backup@192.168.10.40در /root/.ssh/config:
Host backupsrv
HostName 192.168.10.40
User backup
IdentityFile /root/.ssh/backup۲. مخزن و رمز
sudo install -m 600 /dev/null /root/.restic-pass
openssl rand -base64 32 | sudo tee /root/.restic-pass > /dev/null
export RESTIC_REPOSITORY=sftp:backupsrv:/backups/web01
export RESTIC_PASSWORD_FILE=/root/.restic-pass
sudo -E restic initرمز مخزن را جای امن دیگری هم نگه دارید. بدون آن، بکاپها قابل بازیابی نیستند.
۳. اسکریپت بکاپ
#!/usr/bin/env bash
# /usr/local/sbin/backup.sh
set -euo pipefail
export RESTIC_REPOSITORY=sftp:backupsrv:/backups/web01
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic backup /etc /var/www /var/backups/pg --exclude-caches --tag nightly
restic forget --prune --keep-daily 7 --keep-weekly 4 --keep-monthly 6
restic check --read-data-subset=5%sudo chmod 700 /usr/local/sbin/backup.sh۴. اجرای شبانه با systemd timer
# /etc/systemd/system/backup.service
[Unit]
Description=Nightly restic backup
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/backup.sh# /etc/systemd/system/backup.timer
[Unit]
Description=Run backup nightly
[Timer]
OnCalendar=*-*-* 01:30
Persistent=true
[Install]
WantedBy=timers.targetsudo systemctl daemon-reload
sudo systemctl enable --now backup.timer
sudo systemctl start backup.service && journalctl -u backup -n 30 --no-pager۵. بازیابی
sudo -E restic snapshots
sudo -E restic restore latest --target /tmp/restore --include /etc/nginxبازیابی را هر چند وقت یک بار واقعاً آزمایش کنید.