WordPress, yazılım ve IT üzerine notlar
Anasayfa » Sunucu & Linux » rsync rehberi: Dosya kopyalama, senkronizasyon ve yedeklemenin İsviçre çakısı

rsync rehberi: Dosya kopyalama, senkronizasyon ve yedeklemenin İsviçre çakısı

İçindekiler
  1. Temel kullanım
  2. En önemli ayrıntı: Sondaki eğik çizgi
  3. Uzak sunucuya kopyalamak
  4. --delete: Güçlü ve tehlikeli
  5. Dosya ve klasör hariç tutmak
  6. Sunucu taşımada rsync
  7. Anlık görüntü tarzı yedekler: --link-dest
  8. Sık karşılaşılan sorunlar

rsync, iki konum arasında dosyaları senkronize eden bir araçtır. Konumlar aynı makinede de olabilir, SSH ile bağlanılan farklı sunucularda da. cp ve scp'den farkı, yalnızca değişen kısımları aktarmasıdır. 50 GB'lık bir klasörü ilk seferde kopyalamak saatler sürebilir; ertesi gün yalnızca değişen birkaç dosya birkaç saniyede aktarılır.

Temel kullanım

rsync -avh /kaynak/ /hedef/

En sık kullanılan parametreler:

  • -a (archive): Klasörleri özyinelemeli kopyalar; izinleri, sahipliği, zaman damgalarını ve sembolik bağlantıları korur. Neredeyse her zaman kullanılır.
  • -v (verbose): Aktarılan dosyaları listeler.
  • -h (human-readable): Boyutları okunabilir biçimde gösterir.
  • -z (compress): Ağ üzerinden aktarırken veriyi sıkıştırır. Yerel kopyalamada ya da zaten sıkıştırılmış dosyalarda (resim, video, zip) gereksizdir.
  • -P: İlerleme çubuğunu gösterir ve yarıda kalan dosyaların kaldığı yerden devam etmesini sağlar. Büyük aktarımlar için çok kullanışlıdır.

En önemli ayrıntı: Sondaki eğik çizgi

Bu fark, rsync'in en çok hata yapılan noktasıdır:

rsync -a /var/www/site/  /yedek/site/
rsync -a /var/www/site   /yedek/
  • Kaynağın sonunda / varsa: "Bu klasörün içeriğini kopyala." /var/www/site/ içindeki dosyalar doğrudan /yedek/site/ içine gelir.
  • Kaynağın sonunda / yoksa: "Bu klasörün kendisini kopyala." /yedek/ içinde bir site klasörü oluşturulur.

Yanlış kullanıldığında /yedek/site/site/ gibi iç içe klasörler oluşur. Hedefin sonundaki eğik çizgi ise sonucu değiştirmez.

Uzak sunucuya kopyalamak

rsync -avzP /var/www/site/ kullanici@yedek.ornek.com:/yedekler/site/

Sunucudan yerele çekmek için kaynak ve hedefin yerini değiştirin:

rsync -avzP kullanici@sunucu:/var/www/site/ ./site-kopya/

SSH farklı bir portta çalışıyorsa:

rsync -avzP -e "ssh -p 35000" /kaynak/ kullanici@sunucu:/hedef/

--delete: Güçlü ve tehlikeli

Varsayılan olarak rsync, kaynakta silinen dosyaları hedefte silmez. Hedefi kaynağın birebir kopyası yapmak için --delete kullanılır:

rsync -a --delete /var/www/site/ /yedek/site/

Bu parametre, kaynak ve hedefin yeri karıştırıldığında ya da kaynak yanlışlıkla boş olduğunda hedefteki her şeyi siler. Bu yüzden --delete kullanmadan önce her zaman deneme yapın:

rsync -a --delete --dry-run -v /var/www/site/ /yedek/site/

--dry-run (kısaca -n) hiçbir şeyi değiştirmez; yalnızca neyin kopyalanacağını ve neyin silineceğini listeler. Listede beklemediğiniz bir silme varsa durun.

Bir uyarı daha: --delete ile senkronize edilen bir kopya, yedek değildir. Kaynakta yanlışlıkla silinen bir dosya, bir sonraki çalışmada hedefte de silinir. Geçmişe dönük kopyalar için aşağıdaki yönteme ya da restic, borg gibi araçlara bakın.

Dosya ve klasör hariç tutmak

rsync -a \
  --exclude 'cache/' \
  --exclude '*.log' \
  --exclude 'node_modules/' \
  /var/www/site/ /yedek/site/

Çok sayıda kural varsa bir dosyaya yazıp --exclude-from=haric.txt ile verebilirsiniz.

Sunucu taşımada rsync

Sunucu taşımalarında rsync'in en değerli özelliği, işlemin iki aşamada yapılabilmesidir:

  1. Taşımadan önce: Site hâlâ eski sunucuda çalışırken bütün dosyaları kopyalayın. Bu işlem uzun sürebilir ama ziyaretçileri etkilemez.
  2. Taşıma anında: Siteyi bakım moduna alın ve aynı komutu bir kez daha çalıştırın. Bu sefer yalnızca son değişiklikler aktarılır ve işlem birkaç saniye ya da dakika sürer.

Kesinti süresi saatlerden dakikalara iner.

Dosya sahipliğinin korunması için iki tarafta da aynı kullanıcı adları ve kimlik numaraları (UID) olmalıdır. Olmadığında --chown=kullanici:grup parametresiyle hedefte sahipliği belirleyebilirsiniz.

rsync ile, her gün tam bir kopya gibi görünen ama yalnızca değişen dosyalar için yer kaplayan yedekler alınabilir:

BUGUN=$(date +%F)
rsync -a --delete --link-dest=/yedek/son/ /var/www/ /yedek/$BUGUN/
ln -sfn /yedek/$BUGUN /yedek/son

--link-dest, değişmemiş dosyalar için yeni bir kopya oluşturmak yerine bir önceki yedekteki dosyaya sabit bağlantı (hard link) verir. Sonuç olarak her günün klasörü eksiksiz bir kopya gibi görünür, ama disk alanı yalnızca değişen dosyalar kadar artar. Eski bir günü silmek, diğer günleri etkilemez.

Sık karşılaşılan sorunlar

  • "Permission denied": Uzak taraftaki kullanıcının hedef klasöre yazma izni yok, ya da -a ile sahiplik korunmaya çalışılıyor ama kullanıcı root değil. Root olmayan bir kullanıcıyla -a yerine -rlt kullanmak sahiplik ve izin hatalarını önler.
  • Her çalışmada bütün dosyalar yeniden kopyalanıyor: Hedef dosya sistemi zaman damgalarını korumuyor olabilir (örneğin bazı ağ dosya sistemleri). --size-only ya da -c (sağlama toplamı ile karşılaştırma, ama daha yavaş) kullanılabilir.
  • Aktarım çok yavaş: Çok sayıda küçük dosya varsa darboğaz genellikle disk ve dosya listesinin oluşturulmasıdır, ağ değil. Zaten sıkıştırılmış dosyalarda -z kullanmayın.

rsync'in yüzlerce parametresi var. Ama -avhP, --delete, --dry-run ve --exclude ile günlük işlerin neredeyse tamamı hallediliyor. Bir de sondaki eğik çizgiye dikkat etmek yeterli.

Tezcan Kabakçı
Hosting teknik destek uzmanı ve WordPress uzmanı. 2024'ten beri bir hosting şirketinde teknik destek bölümünde çalışıyor; WordPress, DNS ve e-posta sorunlarını her gün yakından görüyor. YouTube kanalı.
Bu yazı 27 Temmuz 2026 tarihinde Sunucu & Linux kategorisinde yayınlandı.
Yeni yazılar e-postanıza gelsin

Ayda birkaç e-posta; istediğiniz an tek tıkla ayrılabilirsiniz.

Videolu anlatımlar YouTube'da
Sunucu ve WordPress sorunlarını kısa videolarla anlattığım kanala abone olabilirsiniz. ▶ Kanala abone ol

Yorumlar

Henüz yorum yok. İlk yorumu siz yazın.

Yorum yazın

Yorumlar onaylandıktan sonra yayımlanır. Bağlantı içeren yorumlar spam olarak değerlendirilebilir.