Rsync ve cron kullanarak bir VPS üzerinde artımlı yedeklemeler
Giriş
Yedeklemeler herhangi bir VPS için gereklidir. Yanlışlıkla silinmelerden, yapılandırma hatalarından, veri bozulmalarından veya sunucu güvenlik ihlallerinden sizi korurlar.
Bu kılavuz, artımlı yedeklemeleri nasıl kuracağınızı açıklar:
- rsync — verimli dosya kopyalama aracı
- hard linkler — her yedekte yinelenen verileri önlemek için
- cron — otomatik yedeklemeleri zamanlamak için
Sonuç: her anlık görüntü tam bir yedekleme gibi görünür, ancak yalnızca değişen dosyalar ekstra yer kaplar. Bu yaklaşım basit, güvenilir ve en yaygın VPS kurulumları için uygundur.
Rsync ile artımlı yedeklemeler nasıl çalışır
rsync iki ana özellik sunar:
- Yalnızca değişen dosyaların senkronizasyonu
--link-destseçeneği: değişmeyen dosyalar için hard linkler oluşturur, böylece ekstra yer kaplamadan birden fazla "tam" yedekleme dizini oluşturulabilir.
Dizin yapısı örneği:
/backups/ daily.0/ - bugünün yedeği daily.1/ - dünün yedeği daily.2/ - 2 gün önceki yedek
Her klasör tam bir yedekleme gibi görünür, ancak yalnızca farklılıklar yer kaplar.
Önkoşullar
VPS üzerinde:
- Linux kurulumu
- Root veya sudo yetkisine sahip kullanıcı erişimi
- Yedekleme anlık görüntüleri için yeterli disk alanı
- Opsiyonel: başka bir sunucuya yedekleme yapılıyorsa uzak depolama
Gerekirse rsync'i yükleyin:
sudo apt update
sudo apt install rsync
Uyarı: Veritabanı sunucularınızı durdurun veya veritabanı dizinlerini yedeklemeden hariç tutun. Rsync ile çevrimiçi veritabanı yedeklemesi bozuk veritabanı yedeklemesine neden olabilir.
Yedekleme dizinlerini oluşturma
Yedeklemeler için bir konum seçin. Genellikle:
- Yerel dosya sistemi:
/backups/ - Harici disk:
/mnt/storage/backups/ - SSH üzerinden uzak sunucu:
user@backup-server:/data/backups/
Örnek (yerel):
sudo mkdir -p /backups
sudo chmod 700 /backups
Artımlı yedeklemeler için temel rsync komutu
Aşağıda ana rsync komutu verilmiştir:
rsync -a --delete \ --link-dest=/backups/daily.1 \ /source/data/ \ /backups/daily.0/
Açıklama:
-a— arşiv modu (izinleri, sahipleri, zaman damgalarını, sembolik linkleri korur)--delete— kaynakta silinen dosyaları kaldırır--link-dest— önceki anlık görüntüdeki değişmeyen dosyalar için hard linkler oluşturur/source/data/— yedeklemek istediğiniz dizin/backups/daily.0/— bugünün anlık görüntüsü
Günlük anlık görüntüler için döndürme betiği
Bir betik oluşturun:
- Mevcut yedekleri döndürün
- Yeni bir artımlı yedek oluşturun
- N gün (örnek: 7) saklayın
Dosya oluşturun:
sudo nano /usr/local/bin/backup_daily.sh
Yapıştırın:
#!/bin/bash BACKUP_DIR="/backups/" SOURCE="/" EXCLUDE="/etc/backup-exclude.txt" DAYS="7" #REMOTE_USER="<YOUR_REMOTE_USER>" #REMOTE_SERVER="<YOUR_REMOTE_SERVER>" REMOTE_DIR="/backups/" # Döndür for ((i=DAYS-1; i>=0; i--)); do if [ -d "$BACKUP_DIR/daily.$i" ]; then rm -rf "$BACKUP_DIR/daily.$((i+1))" mv "$BACKUP_DIR/daily.$i" "$BACKUP_DIR/daily.$((i+1))" fi done # Yedekleme dizinlerini hazırlayın mkdir -p "$BACKUP_DIR/daily.0" if [ ! -d "$BACKUP_DIR/daily.1" ]; then mkdir -p "$BACKUP_DIR/daily.1" fi # Artımlı yedekleme yapın rsync -a --delete \ --link-dest="$BACKUP_DIR/daily.1" \ --exclude-from="$EXCLUDE" \ "$SOURCE" "$BACKUP_DIR/daily.0" if [ -n "$REMOTE_USER" ] && [ -n "$REMOTE_SERVER" ] && [ -n "$REMOTE_DIR" ]; then rsync -azv --delete "$BACKUP_DIR" "$REMOTE_USER@$REMOTE_SERVER:$REMOTE_DIR" fi
Kaydedin ve çıkın. Çalıştırılabilir yapın:
sudo chmod +x /usr/local/bin/backup_daily.sh
Betik üstündeki değişkenleri ihtiyaçlarınıza göre ayarlamak için değiştirebilirsiniz. Örneğin, tam kök dosya sistemi yedeklemesine ihtiyacınız yoksa SOURCE'u belirli bir dizine değiştirin.
Gereksiz dizinleri hariç tutma
Bir hariç tutma dosyası oluşturun:
sudo nano /etc/backup-exclude.txt
Tipik hariç tutmalar:
/proc/sys/tmp/run/dev/mnt/media/var/cache/backups
Cron ile yedeklemeleri zamanlama
Crontab'ı düzenleyin:
sudo crontab -e
Ekle (her gün 03:00'te yedekleme):
0 3 * * * /usr/local/bin/backup_daily.sh >/var/log/backup.log 2>&1
Bu, düzenli otomatik anlık görüntüleri sağlar.
Uzak bir sunucuya yedekleme (isteğe bağlı)
Eğer yerinde yedekleme istiyorsanız, sonraki adımları izleyin. Hedef sunucuda hedef klasörü oluşturun:
mkdir -p /backups
SSH anahtarlarının yapılandırıldığından emin olun. SSH anahtarınızı oluşturmak için aşağıdaki komutu çalıştırın:
ssh-keygen
<YOUR_REMOTE_USER> yerine uzak sunucudaki kullanıcı adınızı, <YOUR_REMOTE_SERVER> yerine uzak sunucu alan adınızı koyun ve SSH anahtarınızı uzak sunucuya kopyalamak için aşağıdaki komutu çalıştırın:
ssh-copy-id <YOUR_REMOTE_USER>@<YOUR_REMOTE_SERVER>
backup_daily.sh dosyanızın üstündeki REMOTE_USER, REMOTE_SERVER değişkenlerini yorumdan çıkarın, <YOUR_REMOTE_USER> yerine uzak sunucudaki kullanıcı adınızı, <YOUR_REMOTE_SERVER> yerine uzak sunucu alan adınızı koyun ve uzak yedeklemeyi etkinleştirmek için backup_daily.sh dosyasını kaydedin.
Yedeklemeleri INTROSERV CloudBox'a yükleme
INTROSERV, önemli dosyalarınızın ve verilerinizin güvenli kopyalarını uzaktaki sunucularda otomatik veya manuel olarak kaydetmenizi sağlayan çevrimiçi depolama sağlar. Bunu uzak yedekleme depolamanız olarak kullanmak için CloudBox web arayüzüne giriş yapın ve genel ssh anahtarınızı profile ekleyin. Profil ayarları sağ üst köşede bulunur.

Anahtarınızı sunucuya yüklemek için "Genel anahtarlar" bölümüne genel SSH anahtarınızı ekleyin.

backup_daily.sh dosyanızın üstündeki REMOTE_USER, REMOTE_SERVER değişkenlerini yorumdan çıkarın, <YOUR_REMOTE_USER> yerine CloudBox sunucusundaki kullanıcı adınızı, <YOUR_REMOTE_SERVER> yerine CloudBox sunucu alan adınızı koyun ve uzak yedeklemeyi etkinleştirmek için backup_daily.sh dosyasını kaydedin.
Yedeklemeleri test etme
Sisteminize güvenmeden önce yedeklemeleri test edin.
- Betik manuel olarak çalıştırın:
sudo /usr/local/bin/backup_daily.sh - Boyutları kontrol edin:
du -sh /backups/*. Sadece bir büyük yedekleme olmalıdır. - Dosya bütünlüğünü doğrulayın:
ls -l /backups/daily.0/etc/
Verileri geri yükleme
Herhangi bir bireysel dosyayı geri yükleyebilirsiniz:
cp /backups/daily.2/etc/nginx/nginx.conf /etc/nginx/
Veya her şeyi geri yükleyin:
sudo rsync -a /backups/daily.0/ /
Uyarı: Sistem dizinlerini geri yüklemek mevcut dosyaları üzerine yazar.
Güvenlik hususları
- Yedekleme dizinlerinde sıkı izinler kullanın (
chmod 700). - SSH kullanıyorsanız, parola girişini devre dışı bırakın, yalnızca anahtarları kullanın.
- Mümkünse yedekleri sunucuyla aynı diskte saklamayın.
- Gerekirse uzak yedekleri LUKS veya şifreli depolama kullanarak şifreleyin.
İzleme ve kayıt tutma
Kayıt tutma zaten cron'da eklenmiştir: /var/log/backup.log
Düzenli olarak kontrol edin:
tail -f /var/log/backup.log
Sonuç
Rsync ile cron kullanmak şunları sunar:
- Hızlı artımlı yedeklemeler
- Hard linkler aracılığıyla verimli disk kullanımı
- Basit geri yükleme süreci
- Tamamen otomatik zamanlama
Bu yöntem güvenilir ve yeni başlayan yöneticiler için kolaydır ve linux VPS kurulumlarında mükemmel çalışır.