Linux rsync komutu: Seçenekler ve kullanım örnekleri

İki sunucunun klasörlerini eşitlemek için her seferinde tamamını yeniden kopyalarsanız, yalnızca bir dosya değişmiş olsa bile aktarım tüm boyut kadar olur. rsync komutu, remote sync ifadesinin kısaltmasıdır; kaynak ile hedefi karşılaştırıp yalnızca farklı dosyaları gönderir ve yerel klasörler arasında da SSH ile bağlı sunucular arasında da aynı şekilde çalışır. Bu yazıda temel kullanımı, seçenekleri ve SSH ile rsync daemon olmak üzere iki bağlantı yönteminin örneklerini derledik.
Bu yazıdaki çıktılar AlmaLinux 9.8'deki rsync 3.2.7'den alındı; rsync kurulu değilse paket yöneticisiyle kurun.
# RHEL ailesi
dnf -y install rsync
# Debian ailesi
apt -y install rsync✅ Temel kullanım
Temel söz dizimi şöyledir.
rsync -seçenekler kaynak hedefcp komutu gibi önce kaynağı, sonra hedefi yazarsınız. Kaynağın sonuna eğik çizgi [/] koyarsanız hedefe yalnızca klasörün içeriği gider; koymazsanız klasörün kendisi gider.
~]# rsync -av www/ backup/
sending incremental file list
index.html
img/
img/logo.png
~]# rsync -av www backup/
sending incremental file list
www/
www/index.html
www/img/
www/img/logo.pngAynı komutu yeniden çalıştırınca dosya listesi boş kalır ve sent baytı birkaç yüz bayta düşer. Boyutu ve değişiklik zamanı aynı olan dosyalar atlanır.
~]# rsync -av www/ backup/
sending incremental file list
sent 166 bytes received 13 bytes 358.00 bytes/sec
total size is 3,015 speedup is 16.84-a olmadan yalnızca -r kullanırsanız değişiklik zamanları korunmaz ve sonraki çalıştırmada aynı dosyalar yeniden gönderilir. Klasör eşitlerken varsayılan olarak -a kullanın.
-n seçeneği hiçbir şey aktarmadan yalnızca değişecek dosyaları gösterir ve çıktının sonuna [(DRY RUN)] eklenir. --delete gibi hedefteki dosyaları silen seçenekleri önce -n ile kontrol edip sonra gerçekten çalıştırın.
~]# rsync -avn --delete www/ backup/
sending incremental file list
deleting old.bak
index.html
sent 188 bytes received 39 bytes 454.00 bytes/sec
total size is 3,013 speedup is 13.27 (DRY RUN)✅ rsync komutu seçenekleri & simülatör
| Seçenek | Açıklama | |
|---|---|---|
| -a | --archiveAlt dizinleri de kopyalar; izinleri, sahibi, değişiklik zamanını ve sembolik bağlantıları korur (-rlptgoD ile aynı) | |
| -v | --verboseAktarılan her dosyanın adını ve aktarım toplamını yazdırır | |
| -z | --compressAktarım sırasında dosya verisini sıkıştırır | |
| -r | --recursiveAlt dizinleri de kopyalar (-a içinde) | |
| -t | --timesDeğişiklik zamanlarını korur (-a içinde). Sonraki çalıştırmada hangi dosyaların atlanacağını bu belirler | |
| -n | --dry-runAktarmadan yalnızca değişecek dosyaları gösterir ve sona (DRY RUN) koyar | |
| -u | --updateHedefte daha yeni olan dosyaları atlar | |
| -h | --human-readableBayt sayılarını K, M ve G biriminde yazdırır | |
| -P | --partial --progress ile aynı. Dosya başına ilerlemeyi gösterir ve yarıda kalan aktarımları sürdürür | |
| -i | --itemize-changesHer dosyada neyin değiştiğini kodla yazdırır>f+++++++++ yeni dosya · >f.st...... boyut ve zaman değişti · *deleting silindi | |
| -e | --rsh=COMMANDUzak kabuğu belirtir-e 'ssh -p 2222 -i /root/.ssh/key.pem' | |
| --delete | Kaynakta artık olmayan dosyaları hedeften siler (-r ya da -a gerekir) | |
| --exclude=PATTERN | Desene uyan dosya ve dizinleri dışarıda bırakır--exclude '*.tmp' --exclude 'cache/' | |
| --include=PATTERN | --exclude'dan önce konunca yalnızca o deseni dışlamanın dışında tutar | |
| --max-size=SIZE | Belirtilen boyuttan büyük dosyaları aktarmaz (küçük dosyalar için --min-size)--max-size=3M --min-size=10k | |
| --bwlimit=RATE | Aktarım hızını sınırlar, birim KiB/s | |
| --stats | Dosya sayısını ve aktarım istatistiklerini yazdırır |
✅ Bağlantı yöntemleri: SSH ve rsync daemon
Uzak sunucuyla eşitlemenin iki bağlantı yolu vardır. Ana makineden sonraki tek iki nokta [:] SSH üzerinden gider, çift iki nokta [::] ise 873 portundaki rsync daemon'a doğrudan bağlanır.
| Tür | SSH yöntemi (:) | rsync daemon yöntemi (::) |
|---|---|---|
| Bağlantı biçimi | rsync -seçenekler user@host:/yol /yerel/yol | rsync -seçenekler host::modül/yol /yerel/yol |
| Port | SSH portu (varsayılan 22) | 873 |
| Şifreleme | SSH ile şifrelenir | Şifreleme yok |
| Kimlik doğrulama | SSH anahtarı ya da parola | rsyncd.conf içinde hosts allow; hesap ve parola isteğe bağlı |
| Sunucu tarafı ayarı | Yok (SSH erişimi varsa çalışır) | rsync-daemon kurulumu, /etc/rsyncd.conf, 873 portunu açma |
| Amaç | Sunucular arası yedekleme ve dağıtım (varsayılan seçim) | SSH hesabı vermeden iç ağda yansılama |
🔲 SSH yöntemi
SSH ile bağlanabildiğiniz bir sunucuda sunucu tarafında ayar yapmadan hemen kullanabilirsiniz. Port farklıysa ya da anahtar dosyası kullanıyorsanız -e seçeneğine ssh komutunu olduğu gibi yazın.
# yerel → uzak
rsync -avz /home/2server_data/ root@192.168.45.239:/home/1server_data/
# uzak → yerel
rsync -avz root@192.168.45.239:/home/1server_data/html_Remote /home/2server_data
# SSH portu ve anahtar dosyası
rsync -avz -e 'ssh -p 2222 -i /root/.ssh/key.pem' root@192.168.45.239:/home/1server_data/ /home/2server_data
Belirli dosya ya da dizinleri dışarıda bırakmak için her desene bir --exclude ekleyin ya da desenleri süslü parantez içinde toplayıp bir kez yazın.
rsync -avz --exclude 'html_Remote_Excertion' --exclude 'Exception_File' root@192.168.45.239:/home/1server_data/ /home/2server_data
rsync -avz --exclude={'html_Remote_excertion/*','Exception_File'} root@192.168.45.239:/home/1server_data/ /home/2server_data
🔲 rsync daemon yöntemi
rsync daemon, SSH hesabı olmadan 873 portundan modül bazında erişim verir; iletişim şifrelenmediği için aynı iç ağdaki sunucular arasında kullanılır.
AlmaLinux 9'da rsync-daemon paketini kurup hizmeti başlatın. firewalld kullanan sunucularda 873 portunu açın; bulut sunucularda konsoldaki güvenlik duvarından açın. RHEL 8 ve öncesinde kullanılan xinetd yöntemi 9'da kalktı.
dnf -y install rsync-daemon
systemctl enable --now rsyncd
firewall-cmd --permanent --add-port=873/tcp
firewall-cmd --reloadYapılandırma dosyası [/etc/rsyncd.conf] içine modül adını, yolunu ve izin verilen ana makineleri yazın. read only yes olursa uzaktan yalnızca çekme yapılabilir.
[myhome]
path = /home
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow = 192.168.45.182
max connections = 3
timeout = 30Uzak tarafta ana makineden sonra yalnızca çift iki nokta yazarsanız modül listesi, modül adını da eklerseniz içindeki dosya listesi görünür.
~]# rsync 192.168.45.239::
myhome
home
~]# rsync 192.168.45.239::myhome
drwxr-xr-x 4,096 2025/06/12 22:14:39 .
drwxr-xr-x 4,096 2025/06/12 22:21:10 1server_data
drwxr-xr-x 4,096 2025/06/12 22:14:39 2server_dataKopyalama [host::modül/yol] biçiminde yapılır. --delete kaynakta olmayan dosyaları hedeften siler, --include ise yalnızca --exclude'dan önce konan öğeleri dışlamanın dışında tutar.
~]# rsync -avz 192.168.45.239::myhome/1server_data/ /home/2server_data/
receiving incremental file list
./
Exception_File
html_Remote/
html_Remote_Excertion/
sent 58 bytes received 332 bytes 780.00 bytes/sec
total size is 442 speedup is 1.13
~]# rsync -avz --delete 192.168.45.239::myhome/1server_data/ /home/2server_data/
~]# rsync -avz --include '*.html' --exclude 'exclude.txt' 192.168.45.239::myhome/1server_data/ /home/2server_data/

SELinux açık bir sunucuda modül yoluna erişim [Permission denied (13)] ile engellenebilir. Testte [setenforce 0] ile SELinux kapatıldıktan sonra geçti.
~]# rsync -avz 192.168.45.239::myhome/1server_data/ /home/2server_data/
receiving incremental file list
rsync: change_dir "/1server_data" (in myhome) failed: Permission denied (13)
sent 8 bytes received 90 bytes 65.33 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files/attrs were not transferred (see Önceki errors) (code 23) at main.c(1658) [Receiver=3.1.2]--bwlimit aktarım hızını KiB/s biriminde sınırlar; -P eklerseniz her dosyanın ilerlemesini de görürsünüz. --max-size ve --min-size yalnızca belirtilen boyut aralığındaki dosyaları aktarır.
rsync -avzP --bwlimit=100 192.168.45.239::myhome/1server_data/ /home/2server_data/
rsync -avz --max-size='3M' --min-size='10k' 192.168.45.239::myhome/1server_data/ /home/2server_data/
ℹ️ Satış ortaklığı bildirimi
Bu sitenin içeriklerinde satış ortaklığı bağlantıları bulunur. Bir ziyaretçi bu bağlantılar üzerinden ürün veya hizmet satın alırsa bu site satıcıdan komisyon alır. Bu süreçte alıcının ödediği tutar (kampanya indirimlerinde tutar düşer↓) artmaz. Yayımlanan fiyat, indirim ve stok bilgileri yazının yazıldığı zamana aittir ve gerçek durumdan farklı olabilir; bu yüzden satın almadan önce son bilgiyi satıcıdan kontrol etmenizi rica ederiz. Ürünler kendi ölçütlerimize göre seçilir ve değerlendirilir; komisyon alınıp alınmaması tanıtım sırasını veya değerlendirme içeriğini etkilemez.