Geri yükleyebildiğiniz bir yedek, can sıkıcı bir öğleden sonra ile bir projeyi kaybetmek arasındaki farktır. Temel VPS yedekleme rehberi fikri anlatır. Bu rehber restic ve BorgBackup ile daha ileri gider: ikinci bir sunucuya veya nesne depolamaya şifreli, tekilleştirilmiş yedekler alan iki araç.
Düz kopyalar yerine neden restic veya borg
- Tekilleştirme. Yalnızca değişen veriler saklanır, böylece günlük anlık görüntüler küçük kalır.
- Şifreleme. Veriler sunucunuzdan çıkmadan önce şifrelenir.
- Anlık görüntüler. Geçmişteki herhangi bir günün durumunu geri yükleyebilirsiniz.
- Doğrulama. Her iki araç da depo bütünlüğünü kontrol edebilir.
Birini seçin. Restic basittir ve SFTP ile S3 uyumlu depolama dahil birçok depolama türüyle çalışır. Borg çok verimlidir ve borg kurulu bir sunucuya SSH üzerinden çalışır.
Yedekler nereye gönderilmeli
Tek yedeği asla aynı sunucuda tutmayın. Başka bir konumdaki ikinci bir VPS’i, S3 uyumlu bir kovayı veya bir depolama kutusunu kullanın. Büyük diskli küçük bir VPS, ucuz bir yedekleme hedefi olur. VPS planlarına bakın.
Restic: kurulum
sudo apt install -y restic
export RESTIC_REPOSITORY="sftp:backup@backup.example.com:/srv/restic/myserver"
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic init
Uzun, rastgele bir parolayla parola dosyasını oluşturun ve bir kopyasını çevrimdışı saklayın. Bu parola olmadan yedekler geri yüklenemez.
restic backup /etc /home /var/www --exclude-caches
restic snapshots
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
restic check
Borg: kurulum
sudo apt install -y borgbackup
export BORG_REPO="ssh://backup@backup.example.com/srv/borg/myserver"
borg init --encryption=repokey-blake2
borg create --stats --compression zstd ::'{hostname}-{now:%Y-%m-%d}' /etc /home /var/www
borg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 6
borg check
Depo anahtarını borg key export ile dışa aktarın ve saklayın.
Veritabanları özen gerektirir
Çalışan veritabanı dosyalarını kopyalamayın. Önce döküm alın ve dökümü yedekleyin:
mysqldump --single-transaction --all-databases | gzip > /var/backups/db.sql.gz
sudo -u postgres pg_dumpall | gzip > /var/backups/pg.sql.gz
Zamanlayın
Yedeği bir systemd zamanlayıcısı veya cron ile çalıştırın. Basit bir cron satırı:
15 3 * * * root /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Hata durumunda kendinize uyarı gönderin; örneğin betiğin sonunda bir izleme ping’i ile.
Geri yüklemeyi test edin
restic restore latest --target /tmp/restore-test --include /etc/nginx
ls /tmp/restore-test
Zaman zaman yedek bir makinede gerçek bir geri yükleme testi yapın. Hiç test etmediğiniz bir yedek yalnızca bir umuttur.