Rsync, yerel veya uzak sunucular arasında dosya ve dizin senkronizasyonu ve transferi yapmayı sağlayan, güçlü ve esnek bir komut satırı aracıdır. Rsync, özellikle yedekleme ve dosya senkronizasyonu işlemlerinde oldukça popülerdir çünkü yalnızca değişen dosyaları transfer eder, böylece gereksiz veri aktarımını önler. Bu sayede, hem zaman hem de bant genişliği tasarrufu sağlar.
Bu makalede, rsync komutunun kullanım detaylarını ve 16 pratik örneğini bulacaksınız. Ayrıca, rsync komutunu kullanırken karşılaşabileceğiniz yaygın hatalar ve çözümleri hakkında bilgilere de ulaşabilirsiniz.
Rsync Nedir ve Neden Tercih Edilir?
Rsync, Linux ve Unix tabanlı sistemlerde kullanılan, dosya transferini hızlandıran ve daha verimli hale getiren bir araçtır. Rsync’in benzersiz özelliği, yalnızca değişiklik yapılan dosyaların kopyalanmasıdır. Bu özellik, büyük veri setlerinin yedeklenmesinde büyük kolaylık sağlar. Örneğin, günlük olarak bir dosyanın sadece küçük bir bölümü değişmişse, rsync yalnızca değişen kısmı senkronize eder.
Rsync’in Başlıca Avantajları
- Verimli Veri Transferi: Yalnızca dosyalar arasındaki farkları transfer ederek gereksiz veri aktarımını önler. Bu, özellikle geniş dosyalarla çalışırken ve düşük bant genişliği olan ağlarda önemli avantajlar sunar.
- Dosya Meta Verilerini Koruma: Rsync, dosya izinlerini, sahiplik bilgilerini, zaman damgalarını ve diğer dosya özelliklerini korur. Böylece dosya kopyalandıktan sonra özellikleri bozulmadan korunur.
- Sıkıştırma Desteği: Rsync, transfer sırasında dosyaları sıkıştırarak ağ üzerindeki veri miktarını azaltır. Bu özellik, ağ bant genişliğini verimli kullanmanızı sağlar.
- Güvenli Veri Transferi: Rsync, SSH üzerinden çalışarak verilerinizi şifreler ve güvenli bir şekilde transfer eder.
- Esnek Senkronizasyon Seçenekleri: Rsync, yerel ve uzak sunucular arasında tek yönlü veya çift yönlü senkronizasyon yapabilir, bu da yedekleme süreçlerini kolaylaştırır.
Rsync Komutunun Temel Söz Dizimi
Rsync komutu, temel olarak aşağıdaki şekilde kullanılır:
rsync [SEÇENEKLER] KAYNAK HEDEF
- KAYNAK: Kopyalamak istediğiniz dosya veya dizinin yolunu belirtir.
- HEDEF: Dosyanın kopyalanacağı yerin yolunu belirtir.
- SEÇENEKLER: Rsync’in davranışını özelleştirmek için kullanılan parametrelerdir.
Sık Kullanılan Rsync Seçenekleri:
- -a: Arşiv modu, dosya izinleri, sahiplik ve zaman damgaları dahil tüm dosya özelliklerini koruyarak senkronizasyon yapar.
- -v: Detaylı çıktı verir, yapılan işlemleri ekrana yansıtır.
- -r: Alt dizinleri ve dosyaları da kopyalar.
- -z: Transfer sırasında dosyaları sıkıştırır.
- -h: Dosya boyutları ve ilerleme bilgilerini okunabilir formatta gösterir.
- -P: İlerleme çubuğu gösterir ve transfer sırasında kesintiye uğrayan dosyaların kaldığı yerden devam etmesini sağlar.
Rsync Kullanım Örnekleri: Dosya Transferi ve Senkronizasyonu
1. Yerel Dosyayı Kopyalama
Yerel bir dosyayı başka bir dizine kopyalamak için rsync kullanabilirsiniz. Bu, özellikle yedekleme işlemlerinde yararlıdır:
rsync -zvh backup.tar.gz /tmp/backups/
Bu komut, backup.tar.gz dosyasını /tmp/backups/ dizinine kopyalar. Hedef dizin yoksa rsync bu dizini otomatik olarak oluşturur. Bu yöntem, yerel bir sistemde dosya kopyalama için hızlı ve güvenilir bir yol sunar.
2. Yerel Klasör Kopyalama ve Senkronizasyonu
Bir dizindeki tüm dosyaları başka bir dizine kopyalamak isterseniz, arşiv modu kullanarak bu işlemi yapabilirsiniz:
rsync -avzh /root/rpmpkgs /tmp/backups/
Bu komut, /root/rpmpkgs dizinindeki tüm dosyaları ve alt dizinleri /tmp/backups/ dizinine kopyalar. Arşiv modu sayesinde dosya izinleri, zaman damgaları gibi bilgiler korunur. Bu, bir dizinin tüm içeriğini güvenli bir şekilde taşımak için idealdir.
3. Yerel Sunucudan Uzak Sunucuya Klasör Kopyalama
Rsync’in en güçlü yanlarından biri, uzak sunucular arasında dosya transferi yapabilmesidir. Yerel bir klasörü uzak bir sunucuya senkronize etmek için:
rsync -avzh /root/rpmpkgs root@192.168.0.141:/root/
Bu komut, yerel /root/rpmpkgs dizinini uzak sunucudaki /root/ dizinine kopyalar. Rsync, SSH üzerinden güvenli bir bağlantı kurar ve dosyaları şifreli bir şekilde transfer eder.
4. Uzak Sunucudan Yerel Sunucuya Klasör Kopyalama
Uzak bir sunucudan dosya veya klasörleri yerel sunucuya kopyalamak için şu komutu kullanabilirsiniz:
rsync -avzh root@192.168.0.141:/root/rpmpkgs /tmp/myrpms/
Bu komut, uzak sunucudaki /root/rpmpkgs dizinini yerel /tmp/myrpms/ dizinine kopyalar. Dosya izinleri ve zaman damgaları gibi özellikler korunur, böylece hedefteki dosyalar kaynakla birebir aynı olur.
5. SSH Üzerinden Güvenli Dosya Transferi
SSH kullanarak güvenli bir şekilde dosya transferi gerçekleştirmek için rsync kullanabilirsiniz. Bu özellik, dosyalarınızı şifreleyerek güvenli bir ortamda transfer etmenizi sağlar:
rsync -avzhe ssh /path/to/source user@remote:/path/to/destination
Bu komut, dosyaları SSH üzerinden hedefe gönderir ve güvenli bir bağlantı kurar.
6. Uzak Sunucudan Yerel Sunucuya Dosya Kopyalama
Bir dosyayı uzak bir sunucudan yerel bilgisayarınıza SSH ile kopyalamak için:
rsync -avzhe ssh root@192.168.0.141:/root/anaconda-ks.cfg /tmp/
Bu komut, uzak sunucudaki anaconda-ks.cfg dosyasını yerel /tmp/ dizinine kopyalar.
7. Yerel Sunucudan Uzak Sunucuya Dosya Kopyalama
Yerel bir dosyayı SSH üzerinden uzak sunucuya güvenli bir şekilde kopyalamak için:
rsync -avzhe ssh backup.tar.gz root@192.168.0.141:/backups/
Bu komut, yerel backup.tar.gz dosyasını uzak sunucudaki /backups/ dizinine kopyalar. Güvenli ve şifreli bir transfer sağlar.
8. Veri Transferi Sırasında İlerleme Durumunu Görüntüleme
Transfer işlemi sırasında dosyaların ilerleme durumunu görüntülemek isterseniz –progress seçeneğini ekleyebilirsiniz:
rsync -avzhe ssh --progress /root/rpmpkgs root@192.168.0.141:/root/rpmpkgs
Bu komut, transfer edilen dosyaların ilerleme durumunu detaylı bir şekilde gösterir. Büyük dosya transferlerinde oldukça kullanışlıdır.
9. Belirli Bir Dosya Uzantısını Transfer Etme
Belirli bir dosya uzantısına sahip dosyaları senkronize etmek için şu komutu kullanabilirsiniz:
rsync -avz --include='*.txt' /source/ user@remote:/destination/
Bu komut, sadece .txt uzantılı dosyaları transfer eder ve diğer dosyaları göz ardı eder. Özellikle belirli dosya türlerini ayıklamak için kullanışlıdır.
10. Belirli Bir Dosya Uzantısını Hariç Tutma
Bazı dosya türlerini hariç tutarak sadece belirli dosyaların transfer edilmesini istiyorsanız, şu komutu kullanabilirsiniz:
rsync -avz --exclude='*.mp4' /source/ user@remote:/destination/
Bu komut, .mp4 uzantılı dosyaları transferden hariç tutar. Büyük dosya boyutlarına sahip medya dosyalarını ayıklamak için ideal bir yöntemdir.
Sık Karşılaşılan Hatalar ve Çözümleri
1. “Permission Denied” Hatası
Hata: Rsync kullanırken “permission denied” hatası alabilirsiniz. Bu, dosyaya erişim izninizin olmadığını gösterir.
Çözüm: sudo
komutunu kullanarak işlemi root olarak çalıştırmayı deneyin:
sudo rsync -avz /path/to/source /path/to/destination
2. “Connection Refused” Hatası
Hata: Uzak bir sunucuya bağlanmaya çalışırken “connection refused” hatası alıyorsanız, sunucunun SSH bağlantılarını kabul etmiyor olma ihtimali vardır.
Çözüm: Sunucuda SSH servisinin çalıştığından emin olun:
sudo systemctl start sshd
3. “No Space Left on Device” Hatası
Hata: Hedef disk alanı dolduğunda rsync transferi durdurur ve bu hatayı alırsınız.
Çözüm: Diskte yeterli alan olduğundan emin olun ve gerekirse gereksiz dosyaları silin:
df -h
Rsync, güçlü ve esnek bir araç olmasına rağmen, bazı yaygın hatalarla karşılaşabilirsiniz. Bu çözümlerle birlikte, rsync komutlarını sorunsuz bir şekilde kullanarak dosya senkronizasyonu işlemlerini başarılı bir şekilde gerçekleştirebilirsiniz.