VPS'de rsync ve cron kullanılarak artımlı yedeklemeler | INTROSERV
EUR
european

EUR

usa

USD

Turkish Tr
Ex. VAT Ex. VAT 0%

VPS'de rsync ve cron kullanılarak artımlı yedeklemeler

Giriş

Yedeklemeler, her VPS için vazgeçilmezdir. Yedeklemeler, sizi yanlışlıkla silme, yapılandırma hataları, veri bozulması veya sunucunun güvenliğinin ihlal edilmesinden korur.

Bu kılavuz, aşağıdakileri kullanarak artımlı yedeklemelerin nasıl kurulacağını açıklamaktadır:

  • rsync — verimli bir dosya kopyalama aracı
  • sabit bağlantılar — her yedeklemede veri tekrarını ö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ştirilen dosyalar fazladan yer kaplar. Bu yaklaşım basit, güvenilirdir ve en yaygın VPS kurulumları için uygundur.

rsync ile artımlı yedeklemeler nasıl çalışır?

rsync iki temel özellik sunar:

  1. Yalnızca değiştirilen dosyaların senkronizasyonu
  2. --link-dest seçeneği: değişmemiş dosyalar için sabit bağlantılar oluşturur ve ekstra alan tüketmeden birden fazla "tam" yedekleme dizini oluşturulmasına olanak tanır.

Dizin yapısı örneği:

/backups/ daily.0/ - today's backup daily.1/ - yesterday's backup daily.2/ - backup from 2 days ago

Her klasör tam bir yedekleme gibi görünür, ancak yalnızca farklılıklar yer kaplar.

Ön Koşullar

VPS'de:

  • Linux kurulumu
  • Root veya sudo yetkisine sahip kullanıcı olarak erişim
  • Yedekleme anlık görüntüleri için yeterli disk alanı
  • İsteğe bağlı: başka bir sunucuya yedekleme yapılıyorsa uzaktan depolama

Gerekirse rsync'i kurun:

sudo apt update sudo apt install rsync

Warning

Veritabanı sunucularınızı durdurun veya veri dizinlerini yedeklemeden hariç tutun. rsync aracılığıyla çevrimiçi veritabanı yedeklemesi, veritabanı yedeklemesinin bozulmasına neden olabilir.

Yedekleme dizinlerini oluşturma

Yedeklemeler için bir konum seçin. Genellikle:

  • Yerel dosya sistemi: /backups/
  • Harici disk: /mnt/storage/backups/
  • SSH aracılığıyla 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 temel 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ı ve sembolik bağlantıları korur)
  • --delete — kaynakta silinen dosyaları kaldırır
  • --link-dest — önceki anlık görüntüdeki değişmemiş dosyalara sabit bağlantılar 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 rotasyon komut dosyası

Aşağıdakileri yapmak için bir komut dosyası oluşturun:

  1. Mevcut yedeklemeleri döndürmek
  2. Yeni bir artımlı yedekleme oluşturmak
  3. N gün boyunca saklayın (örnek: 7)

Dosya oluşturun:

sudo nano /usr/local/bin/backup_daily.sh

Yapıştır:

#!/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/" # Rotate 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 # Prepare backup directories mkdir -p "$BACKUP_DIR/daily.0" if [ ! -d "$BACKUP_DIR/daily.1" ]; then mkdir -p "$BACKUP_DIR/daily.1" fi # Perform incremental backup 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

Kaydet ve çık. Yürütülebilir hale getir:

sudo chmod +x /usr/local/bin/backup_daily.sh

Komut dosyasının üst kısmındaki değişkenleri değiştirerek komut dosyasını ihtiyaçlarınıza göre uyarlayabilirsiniz. Örneğin, kök dosya sisteminin tam yedeğine ihtiyacınız yoksa SOURCE'u belirli bir dizine değiştirin.

Gereksiz dizinleri hariç tutma

Hariç tutma dosyası oluşturun:

sudo nano /etc/backup-exclude.txt

Tipik hariç tutulanlar:

  • /proc
  • /sys
  • /tmp
  • /run
  • /dev
  • /mnt
  • /media
  • /var/önbellek
  • /yedeklemeler

Cron ile yedeklemeleri planlama

crontab'ı düzenleyin:

sudo crontab -e

Ekle (her gün saat 03:00'da yedekleme):

0 3 * * * /usr/local/bin/backup_daily.sh >/var/log/backup.log 2>&1

Bu, düzenli otomatik anlık görüntülerin alınmasını sağlar.

Uzak bir sunucuya yedekleme (isteğe bağlı)

Tesis dışı yedekleme yapmak istiyorsanız aşağıdaki adımları izleyin. Hedef sunucuda bir 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> kısmını uzak sunucudaki kullanıcı adınızla, <YOUR_REMOTE_SERVER> kısmını ise uzak sunucunuzun etki alanı adıyla değiştirin 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 en üstündeki REMOTE_USER ve REMOTE_SERVER değişkenlerinin yorum işaretlerini kaldırın, <YOUR_REMOTE_USER> kısmını uzak sunucudaki kullanıcı adınızla, <YOUR_REMOTE_SERVER> kısmını ise uzak sunucunuzun etki alanı adıyla değiştirin 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ı uzak sunuculara otomatik veya manuel olarak kaydetmenize olanak tanıyan bir çevrimiçi depolama hizmeti sunar. Bunu uzak yedekleme depolama alanınız olarak kullanmak için CloudBox web arayüzüne giriş yapın ve profilinize genel SSH anahtarınızı ekleyin. Profil ayarları sağ üst köşede bulunur.

CloudBox profile settings

Anahtarınızı sunucuya yüklemek için "Public keys" (Genel anahtarlar) bölümüne genel SSH anahtarınızı girin.

CloudBox public SSH key section

backup_daily.sh dosyanızın en üst kısmındaki REMOTE_USER ve REMOTE_SERVER değişkenlerinin yorum işaretlerini kaldırın, <YOUR_REMOTE_USER> kısmını CloudBox sunucusundaki kullanıcı adınızla, <YOUR_REMOTE_SERVER> ifadesini CloudBox sunucunuzun etki alanı adıyla değiştirin ve uzaktan yedeklemeyi etkinleştirmek için backup_daily.sh dosyasını kaydedin.

Yedeklemeleri test etme

Sisteminize güvenmeden önce yedeklemeleri test edin.

  1. Komut dosyasını manuel olarak çalıştırın: sudo /usr/local/bin/backup_daily.sh
  2. Boyutları kontrol edin: du -sh /backups/*. Yalnızca tek bir büyük yedekleme dosyası olmalıdır.
  3. Dosya bütünlüğünü doğrulayın: ls -l /backups/daily.0/etc/

Verileri geri yükleme

Herhangi bir dosyayı tek tek geri yükleyebilirsiniz:

cp /backups/daily.2/etc/nginx/nginx.conf /etc/nginx/

Veya her şeyi geri yükleyebilirsiniz:

sudo rsync -a /backups/daily.0/ /

Warning

Sistem dizinlerini geri yüklemek, mevcut dosyaların üzerine yazılır.

Güvenlik hususları

  • Yedekleme dizinlerinde sıkı izinler kullanın (chmod 700).
  • SSH kullanıyorsanız, şifre ile girişi devre dışı bırakın, yalnızca anahtarları kullanın.
  • Mümkünse yedekleri sunucuyla aynı diskte saklamayın.
  • Gerekirse, LUKS veya şifreli depolama kullanarak uzaktan yedeklemeleri şifreleyin.

İzleme ve günlük kaydı

Günlük kaydı cron'a zaten eklenmiştir: /var/log/backup.log

Düzenli olarak kontrol edin:

tail -f /var/log/backup.log

Sonuç

Cron ile rsync kullanmak şunları sağlar:

  • Hızlı artımlı yedeklemeler
  • Sabit bağlantılar sayesinde verimli disk kullanımı
  • Basit geri yükleme süreci
  • Tamamen otomatik zamanlama

Bu yöntem, acemi yöneticiler için güvenilir ve kolaydır ve Linux VPS kurulumlarında mükemmel şekilde ç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