Rsync, iki klasörü eşitlemek için kullanılan bir dosya kopyalama aracıdır. Hedefte zaten aynı olan dosyaları yeniden göndermez, yalnız değişen dosyaları (ve büyük dosyalarda değişen parçaları) aktarır. Bu yüzden düzenli yedekleme ve sunucu taşımada çok kullanılır.
Rsync uzak sunucuya SSH üzerinden bağlanır. Paylaşımlı Linux hosting paketlerinde SSH olmadığı için bu rehber Cloud, VPS ve dedicated sunucular içindir.
Temel kullanım
rsync -av /kaynak/ /hedef/
-a (arşiv kipi) klasörleri alt klasörleriyle kopyalar; izinleri, sahipliği ve tarihleri korur. -v aktarılan dosyaları listeler.
Kaynak yolun sonundaki / önemlidir: /kaynak/ klasörün içeriğini, /kaynak ise klasörün kendisini hedefe kopyalar.
Örnekler
Sunucuya gönderme
rsync -avz /var/www/site/ root@203.0.113.10:/var/www/site/
-z aktarım sırasında sıkıştırır.
Farklı SSH bağlantı noktasıyla
rsync -av -e "ssh -p 2222" /yedek/ root@203.0.113.10:/yedek/
Hedefte daha yeni olan dosyalara dokunmadan
rsync -au /kaynak/ /hedef/
-u, hedefteki dosya kaynaktakinden daha yeniyse onu atlar.
Kaynakta silinen dosyaları hedeften de silme
rsync -av --delete /kaynak/ /hedef/
Yalnız belirli dosya türünü kopyalama
rsync -av --include='*/' --include='*.jpg' --exclude='*' /kaynak/ /hedef/
İlk --include='*/' alt klasörlere inilmesini sağlar; olmazsa yalnız en üst klasördeki .jpg dosyaları kopyalanır.
Bir klasörü dışarıda bırakma
rsync -av --exclude='cache/' /kaynak/ /hedef/
Önce deneyin
--dry-run (ya da -n) ile komut hiçbir şeyi değiştirmeden neyin aktarılacağını ya da silineceğini listeler. Özellikle --delete kullanırken önce bu şekilde çalıştırın. Aktarımın ilerlemesini görmek için --progress ekleyin.
rsync -av --delete --dry-run /kaynak/ /hedef/