Rsync ve cron kullanarak bir VPS üzerinde artımlı yedeklemeler | INTROSERV
EUR
european

EUR

usa

USD

Turkish Tr
Ex. VAT Ex. VAT 0%

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:

  1. Yalnızca değişen dosyaların senkronizasyonu
  2. --link-dest seç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

Info

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:

  1. Mevcut yedekleri döndürün
  2. Yeni bir artımlı yedek oluşturun
  3. 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.

CloudBox profil ayarları

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

CloudBox genel SSH anahtar bölümü

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.

  1. Betik manuel olarak çalıştırın: sudo /usr/local/bin/backup_daily.sh
  2. Boyutları kontrol edin: du -sh /backups/*. Sadece bir büyük yedekleme olmalıdır.
  3. 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/ /

Info

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.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA