Sözdizimi
Yerel:
rsync [SEÇENEK...] KAYNAK... [HEDEF]
Uzak kabuk üzerinden erişim:
Çekme (Pull):
rsync [SEÇENEK...] [KULLANICI@]SUNUCU:KAYNAK... [HEDEF]
İtme (Push):
rsync [SEÇENEK...] KAYNAK... [KULLANICI@]SUNUCU:HEDEF
rsync arka plan programı (daemon) üzerinden erişim:
Çekme (Pull):
rsync [SEÇENEK...] [KULLANICI@]SUNUCU::KAYNAK... [HEDEF]
rsync [SEÇENEK...] rsync://[KULLANICI@]SUNUCU[:PORT]/KAYNAK... [HEDEF]
İtme (Push):
rsync [SEÇENEK...] KAYNAK... [KULLANICI@]SUNUCU::HEDEF
rsync [SEÇENEK...] KAYNAK... rsync://[KULLANICI@]SUNUCU[:PORT]/HEDEF)
Yalnızca tek bir KAYNAK argümanı içeren ve HEDEF argümanı olmayan kullanımlar, kopyalama yapmak yerine kaynak dosyaları listeler.
Bu kılavuz sayfasının (konular arası bağlantılar içeren) çevrimiçi sürümüne
<https://download.samba.org/pub/rsync/rsync.1> adresinden ulaşılabilir.
Açıklama
Rsync; hızlı ve olağanüstü derecede çok yönlü bir dosya kopyalama aracıdır. Yerel olarak, herhangi bir uzak kabuk üzerinden başka bir sunucuya/sunucudan veya uzak bir rsync arka plan programına (daemon) kopyalama yapabilir. Davranışının her yönünü denetleyen ve kopyalanacak dosya kümesinin son derece esnek bir şekilde belirlenmesine olanak tanıyan çok sayıda seçenek sunar. Kaynak dosyalar ile hedefteki mevcut dosyalar arasındaki farkları göndererek ağ üzerinden iletilen veri miktarını azaltan delta transfer algoritması ile ünlüdür. Rsync, yedekleme ve aynalama işlemlerinde ve günlük kullanım için gelişmiş bir kopyalama komutu olarak yaygın bir şekilde kullanılmaktadır.
Rsync, aktarılması gereken dosyaları, varsayılan olarak boyutu veya son değiştirilme zamanı değişmiş dosyaları arayan bir "hızlı kontrol" (quick check) algoritması kullanarak bulur. Korunan diğer özniteliklerdeki (seçenekler tarafından talep edilen) değişiklikler, hızlı kontrol dosya verilerinin güncellenmesi gerekmediğini gösterdiğinde doğrudan hedef dosya üzerinde yapılır.
Rsync'in bazı ek özellikleri şunlardır:
o bağlantıların (link), aygıtların (device), sahiplerin (owner), grupların (group) ve izinlerin (permission) kopyalanmasını destekleme
o GNU tar programındakilere benzer exclude ve exclude-from seçenekleri
o CVS'in göz ardı edeceği dosyaları göz ardı etmek için bir CVS exclude modu
o ssh veya rsh dahil olmak üzere şeffaf herhangi bir uzak kabuğu kullanabilme
o süper kullanıcı (super-user) yetkileri gerektirmeme
o gecikme maliyetlerini en aza indirmek için dosya aktarımlarının ardışık düzenlenmesi (pipelining)
o anonim veya kimlik doğrulamalı rsync daemon desteği (aynalama için ideal)
Genel
Rsync, dosyaları uzak bir sunucuya veya sunucudan ya da yerel olarak mevcut sunucu üzerinde kopyalar (iki uzak sunucu arasında dosya kopyalanmasını desteklemez).
Rsync'in uzak bir sistemle bağlantı kurmasının iki farklı yolu vardır: taşıyıcı olarak bir uzak kabuk programı (ssh veya rsh gibi) kullanmak veya TCP aracılığıyla doğrudan bir rsync daemon ile bağlantı kurmak. Uzak kabuk taşıyıcısı, kaynak veya hedef yolu sunucu belirtiminden sonra tek bir iki nokta üst üste (:) ayracı içerdiğinde kullanılır. Doğrudan bir rsync daemon ile bağlantı kurulması ise kaynak veya hedef yolu sunucu belirtiminden sonra çift iki nokta üst üste (::) ayracı içerdiğinde VEYA bir rsync:// URL'si belirtildiğinde gerçekleşir (bu son kuralın istisnası için UZAK KABUK BAĞLANTISI ARACILIĞIYLA RSYNC-DAEMON ÖZELLİKLERİNİN KULLANILMASI bölümüne bakınız).
Özel bir durum olarak, hedef belirtilmeden tek bir kaynak argümanı belirtilirse, dosyalar "ls -l" çıktısına benzer bir formatta listelenir.
Beklendiği üzere, kaynak veya hedef yollarından hiçbiri uzak bir sunucu belirtmiyorsa, kopyalama yerel olarak gerçekleşir (ayrıca --list-only seçeneğine bakınız).
Rsync, yerel tarafı istemci (client), uzak tarafı ise sunucu (server) olarak adlandırır. Sunucuyu bir rsync daemon ile karıştırmayınız. Bir daemon her zaman bir sunucudur, ancak bir sunucu ya bir daemon ya da uzak kabuk tarafından başlatılmış bir işlem olabilir.
Kurulum
Kurulum talimatları için README.md dosyasına bakınız.
Kurulduktan sonra rsync'i, uzak kabuk aracılığıyla erişebildiğiniz herhangi bir makineye (ve rsync daemon modu protokolünü kullanarak erişebildiğiniz bazı makinelere) yönelik kullanabilirsiniz. Uzak aktarımlar için modern rsync, iletişiminde ssh kullanır; ancak varsayılan olarak rsh veya remsh gibi farklı bir uzak kabuk kullanacak şekilde yapılandırılmış olabilir.
Ayrıca, -e komut satırı seçeneğini kullanarak veya RSYNC_RSH ortam değişkenini ayarlayarak dilediğiniz uzak kabuğu belirtebilirsiniz.
Rsync'in hem kaynak hem de hedef makinelerde kurulu olması gerektiğini unutmayınız.
Kullanım
Rsync'i rcp komutunu kullandığınız şekilde kullanırsınız. Biri uzak olabilecek bir kaynak ve bir hedef belirtmeniz gerekir.
Sözdizimini açıklamanın en iyi yolu bazı örnekler vermektir:
rsync -t *.c foo:src/
Bu komut, geçerli dizindeki .c şablonuyla eşleşen tüm dosyaları foo makinesindeki src dizinine aktarır. Dosyalardan herhangi biri uzak sistemde zaten mevcutsa, veri içindeki yalnızca farkları göndererek dosyayı güncellemek için rsync uzak güncelleme protokolü kullanılır. Komut satırındaki joker karakterlerin (.c) bir dosya listesine genişletilmesinin rsync çalıştırılmadan önce kabuk tarafından gerçekleştirildiğini ve rsync'in kendisi tarafından yapılmadığını unutmayınız (diğer tüm Posix tarzı programlarla tamamen aynıdır).
rsync -avz foo:src/bar /data/tmp
Bu komut, foo makinesindeki src/bar dizinindeki tüm dosyaları yerel makinedeki /data/tmp/bar dizinine özyinelemeli (recursive) olarak aktarır. Dosyalar, sembolik bağlantılerin, aygıtların, özniteliklerin, izinlerin, sahipliklerin vb. korunmasını sağlayan arşiv modunda (archive mode) aktarılır. Ayrıca, aktarımın veri kısımlarının boyutunu azaltmak için sıkıştırma kullanılacaktır.
rsync -avz foo:src/bar/ /data/tmp
Kaynak yoldaki sondaki eğik çizgi (/), hedefte ek bir dizin düzeyi oluşturulmasını önlemek için bu davranışı değiştirir. Kaynak yoldaki son / işaretini, "bu dizini ismiyle kopyala" yerine "bu dizinin içeriğini kopyala" anlamına geldiğini düşünebilirsiniz; ancak her iki durumda da kapsayan dizinin öznitelikleri hedefteki kapsayan dizine aktarılır. Diğer bir deyişle, aşağıdaki komutların her biri, /dest/foo dizininin özniteliklerini ayarlamaları da dahil olmak üzere dosyaları aynı şekilde kopyalar:
rsync -av /src/foo /dest rsync -av /src/foo/ /dest/foo
Ayrıca, varsayılan dizinin içeriğini kopyalamak için sunucu ve modül referanslarının sonunda eğik çizgi gerektirmediğini unutmayınız. Örneğin, aşağıdakilerin her ikisi de uzak dizinin içeriğini "/dest" dizinine kopyalar:
rsync -av host: /dest rsync -av host::module /dest
Rsync'i, hem kaynak hem de hedef yollarında ':' karakteri bulunmayan yalnızca yerel modda da kullanabilirsiniz. Bu durumda, geliştirilmiş bir kopyalama komutu gibi davranır.
Son olarak, modül adını boş bırakarak belirli bir rsync daemon'ından edinilebilecek tüm (listelenebilir) modülleri listeleyebilirsiniz:
rsync somehost.mydomain.com::
Farklı Bir İsimle Kopyalama
Bir dizini farklı bir isimle kopyalamak istediğinizde, dizinin içeriğini dilediğiniz herhangi bir hedef dizine yerleştirmek için kaynak dizininin sonunda eğik çizgi kullanın:
rsync -ai foo/ bar/
Rsync, tek bir öğe kopyalarken hedef dosyanın adını özelleştirme yeteneğine de sahiptir. Bunun kuralları şunlardır:
o Aktarım listesi tek bir öğeden (bir dosya veya boş bir dizin) oluşmalıdır
o Hedef yolunun son öğesi bir dizin olarak mevcut olmamalıdır
o Hedef yolu, sonunda bir eğik çizgi ile belirtilmemiş olmalıdır
Bu koşullar altında rsync, hedefin tek öğesinin adını hedef yolunun son öğesi olarak ayarlayacaktır. Bu yöntemi yalnızca bir dosyayı kopyalarken kullanmanın en iyisi olduğunu ve bir dizini kopyalarken yukarıdaki son eğik çizgi yöntemini kullanmanız gerektiğini unutmayınız.
Aşağıdaki örnek, src/foo.c dosyasını save dizinine bar.c olarak kopyalar (bar.c'nin bir dizin olmadığı varsayılmaktadır):
rsync -ai src/foo.c save/bar.c
Tek öğeli kopyalama kuralı, bilmeden tek bir öğeyi kopyalayıp mevcut olmayan bir hedef dizini (sonunda eğik çizgi kullanmadan) belirtirseniz yanlışlıkla canınızı sıkabilir. Örneğin, src/*.c tek bir dosyayla eşleşirse ve save/dir dizini mevcut değilse, hedef dosyayı save/dir olarak adlandırarak kafanızı karıştıracaktır:
rsync -ai src/*.c save/dir
Böyle bir kazayı önlemek için, ya hedef dizinin mevcut olduğundan emin olun ya da hedef yolu sonunda eğik çizgi olacak şekilde belirtin:
rsync -ai src/*.c save/dir/
Sıralı Aktarım Düzeni
Rsync, belirtilen dosya adlarını her zaman kendi dahili aktarım listesine göre sıralar. Bu, aynı ada sahip dizinlerin içeriklerinin birleştirilmesini yönetir ve yinelenen dosya adlarının kaldırılmasını kolaylaştırır. Ancak dosyalar komut satırında verilenden farklı bir sırada aktarıldığında kafa karıştırıcı olabilir.
Belirli bir dosyanın diğerinden önce aktarılması gerekiyorsa, ya dosyaları farklı rsync çağrılarına bölün ya da --delay-updates seçeneğini kullanmayı düşünün (bu seçenek sıralı aktarım düzenini etkilemez, ancak nihai dosya güncelleme aşamasının çok daha hızlı gerçekleşmesini sağlar).
Çoklu Sunucu Güvenliği
Rsync, bir aktarımda paylaşılan dosya isteklerinin çeşitli güvenlik sorunlarına karşı korunmasını sağlamak için adımlar atar. Olası sorunların çoğu, rsync'in aktarılan dosya listesinin talep edilen sınırlar içinde kalmasını sağlamak için adımlar attığı alıcı tarafta ortaya çıkar.
Bu amaçla, rsync 3.1.2 ve sonraki sürümleri, bir dosya listesi aktarımın en üstünden dışarı çıkmaya çalışan mutlak veya göreli bir yol içerdiğinde işlemi iptal etmiştir. Ayrıca, sürüm 3.2.5'ten itibaren rsync, dosya listesinin (1) istemcinin talep ettikleri dışında aktarıma fazladan kaynak argümanı eklenmediğinden emin olmak ve (2) dosya listesinin göndericiye iletilen hariç tutma (exclude) kurallarına uyduğundan emin olmak için iki güvenlik kontrolü daha yapar.
Henüz 3.2.5 istemci rsync'ine sahip olmayanlar (veya ekstra dikkatli olmak isteyenler) için, uzak sunucuya güvenmediğinizde uzak dosyaları tahsis edilmiş özel bir hedef dizinine kopyalamak en güvenlisidir. Örneğin, ev dizininize doğrudan bir rsync kopyası yapmak yerine:
rsync -aiv host1:dir1 ~
Uzak içerik için özel bir "host1-files" dizini tahsis edin:
rsync -aiv host1:dir1 ~/host1-files
Ek ayrıntılar için --trust-sender seçeneğine bakınız.
DİKKAT: Büyük-küçük harf duyarlı (case-preserving) bir dosya sisteminden büyük-küçük harf duyarsız (case-ignoring) bir dosya sistemine dosya kopyalamak için rsync kullanmak pek güvenli değildir. Eğer böyle bir kopyalama yapmanız gerekiyorsa, ya --no-links aracılığıyla sembolik bağlantıları devre dışı bırakmalı ya da --munge-links aracılığıyla sembolik bağlantıların dönüştürülmesini etkinleştirmelisiniz (ve doğru yerel veya uzak seçeneği kullandığınızdan emin olmalısınız). Bu, sembolik bağlantı adı bir dosya veya dizinle çakışırsa rsync'in potansiyel olarak tehlikeli şeyler yapmasını önleyecektir. Ancak, tüm dosyaların tam bir kopyasını almanızı garanti etmez (çünkü isimler çakıştığında bu mümkün olmayabilir). Potansiyel olarak daha iyi bir çözüm, tüm kaynak dosyaları listelemek ve --files-from seçeneğine geçireceğiniz güvenli bir dosya adları listesi oluşturmaktır. İsimde çakışan tüm dosyaların, birden fazla kopyalama işlemi kullanılarak farklı hedef dizinlerine kopyalanması gerekecektir.
Büyük-küçük harf duyarsız bir dosya sisteminden büyük-küçük harf duyarsız bir dosya sistemine kopyalama oldukça iyi çalışabilse de, --delete-during veya --delete-before seçeneği aktif değilse rsync, dosya adının büyük/küçük harf durumunun gönderenle eşleşecek şekilde değiştirilmesi gerektiğini fark etmeden alıcı taraftaki mevcut bir dosyayı güncelleyebilir.
Gelişmiş Kullanım
Uzak bir sunucudan birden fazla dosya talep etme sözdizimi, ilkiyle aynı tarzda ek uzak sunucu argümanları belirtilerek veya sunucu adı atlanarak yapılır. Örneğin, bunların tümü çalışır:
rsync -aiv host:file1 :file2 host:file{3,4} /dest/ rsync -aiv host::modname/file{1,2} host::modname/extra /dest/ rsync -aiv host::modname/first ::extra-file{1,2} /dest/
Bir daemon bağlantısının kopyalama komutu başına yalnızca tek bir modüle erişimi desteklediğini unutmayınız; bu nedenle, bir takip eden yolun başlangıcı ilk yolun modül adıyla (modname) başlamıyorsa, bunun modüldeki bir yol olduğu varsayılır (yukarıda alınan extra-file1 ve extra-file2 gibi).
Rsync'in çok eski sürümleri (2.6.9 ve öncesi) yalnızca tek bir uzak kaynak argümanı belirtilmesine izin veriyordu, bu nedenle bazı kişiler bunun yerine bir argümanı birden fazla yola bölmek için uzak kabuğun boşluk ayırma işlemini gerçekleştirmesine güveniyordu. Bu tür sezgisel olmayan davranışlar artık varsayılan olarak desteklenmemektedir (ancak aşağıda açıklandığı gibi talep edebilirsiniz).
Sürüm 3.2.4'ten itibaren dosya adları, verdiğiniz karakterleri koruyacak şekilde uzak bir kabuğa iletilir. Dolayısıyla, adında boşluk olan bir dosya isterseniz, uzak rsync'in arayacağı şey tam olarak budur:
rsync -aiv host:'a simple file.pdf' /dest/
Uzak rsync argümanlarına manuel olarak ek tırnak işareti uygulamak (veya uzak argüman bölünmesini gerektirmek) üzere yazılmış betikler kullanıyorsanız, rsync'ten ek kaçış işlemlerini betiğinizin yönetmesine izin vermesini isteyebilirsiniz. Bu, betikteki rsync çalışmalarına --old-args seçeneği eklenerek (yeni bir rsync gerektirir) ya da RSYNC_OLD_ARGS=1 ve RSYNC_PROTECT_ARGS=0 dışa aktarılarak (eski veya yeni rsync sürümleriyle çalışır) yapılır.
Bir Rsync Daemon'ına Bağlanma
Rsync'i taşıyıcı olarak bir uzak kabuk olmadan kullanmak da mümkündür. Bu durumda, genellikle TCP port 873'ü kullanarak doğrudan uzak bir rsync daemon'ına bağlanacaksınız. (Bu durum doğal olarak uzak sistemde daemon programının çalışıyor olmasını gerektirir; buna dair bilgi için aşağıdaki BAĞLANTILARI KABUL ETMEK İÇİN BİR RSYNC DAEMON'I BAŞLATMA bölümüne bakınız.)
Rsync'i bu şekilde kullanmak, uzak bir kabuk ile kullanmakla aynıdır; şu farklar vardır:
o Tek iki nokta üst üste (uzak kabuk) sözdizimi yerine çift iki nokta üst üste sözdizimini veya rsync:// URL sözdizimini kullanın.
o "Yol"un ilk öğesi aslında bir modül adıdır.
o Ek uzak kaynak argümanları, GELİŞMİŞ KULLANIM bölümünde tartışıldığı gibi, sunucu adını ve/veya modül adını atlayan kısaltılmış bir sözdizimi kullanabilir.
o Uzak daemon bağlandığınızda bir "günün mesajı" (message of the day - MOTD) yazdırabilir.
o Yalnızca sunucuyu belirtirseniz (modül veya yol olmadan), daemon üzerindeki erişilebilir modüllerin bir listesi çıktı olarak verilir.
o Bir uzak kaynak yolu belirtip hedef belirtmezseniz, uzak daemon üzerindeki eşleşen dosyaların bir listesi çıktı olarak verilir.
o Bağlantı stilini soket bağlantısı kullanmaktan UZAK KABUK BAĞLANTISI ARACILIĞIYLA RSYNC-DAEMON ÖZELLİKLERİNİN KULLANILMASI şeklinde değiştirmekten kaçınmak için --rsh (-e) seçeneği atlanmalıdır.
"src" adındaki uzak bir modüldeki tüm dosyaları kopyalayan bir örnek:
rsync -av host::src /dest
Uzak daemon üzerindeki bazı modüller kimlik doğrulaması gerektirebilir. Bu durumda bağlandığınızda bir şifre istemi alacaksınız. Şifre isteminden kaçınmak için RSYNC_PASSWORD ortam değişkenini kullanmak istediğiniz şifreye ayarlayabilir veya --password-file seçeneğini kullanabilirsiniz. Bu, rsync betik yazımı için yararlı olabilir.
UYARI: Bazı sistemlerde ortam değişkenleri tüm kullanıcılar tarafından görülebilir. Bu sistemlerde --password-file kullanılması önerilir.
Bağlantıyı, RSYNC_PROXY ortam değişkenini web proxy'nizi işaret eden bir sunucu:port çiftine ayarlayarak bir web proxy'si aracılığıyla kurabilirsiniz. Web proxy'nizin yapılandırmasının 873 portuna proxy bağlantılarını desteklemesi gerektiğini unutmayınız.
Ayrıca doğrudan bir soket bağlantısı kurmak yerine çalıştırmak istediğiniz komutlara RSYNC_CONNECT_PROG ortam değişkenini atayarak bir programı proxy olarak kullanıp daemon bağlantısı kurabilirsiniz. Karakter dizisi, rsync komutunda belirtilen sunucu adını temsil etmek üzere "%H" kaçış karakterini içerebilir (karakter dizinizde tek bir "%" işaretine ihtiyacınız varsa "%%" kullanın). Örneğin:
export RSYNC_CONNECT_PROG='ssh proxyhost nc %H 873' rsync -av targethost1::module/src/ /dest/ rsync -av rsync://targethost2/module/src/ /dest/
Yukarıda belirtilen komut, hedef sunucudaki (%H) 873 portuna (rsync daemon) tüm verileri ileten bir proxyhost üzerinde nc (netcat) çalıştırmak için ssh kullanır.
Ayrıca RSYNC_SHELL ortam değişkeni ayarlanmışsa, RSYNC_CONNECT_PROG komutunu çalıştırmak için system() çağrısının varsayılan kabuğu yerine bu program kullanılacaktır.
Uzak Kabuk Bağlantısı Aracılığıyla Rsync-Daemon Özelliklerinin Kullanılması
Bir sisteme yeni soket bağlantılarına (uzak kabuk erişimine izin vermek için halihazırda gerekli olanlar dışında) fiilen izin vermeden bir rsync daemon'ının çeşitli özelliklerini (adlandırılmış modüller gibi) kullanmak bazen yararlıdır. Rsync, uzak bir kabuk kullanarak bir sunucuya bağlanmayı ve ardından yapılandırma dosyasını uzak kullanıcının ev dizininde okumayı bekleyen tek kullanımlık bir "daemon" sunucusu başlatmayı destekler. Bir daemon tarzı aktarımın verilerini şifrelemek istiyorsanız bu yararlı olabilir; ancak daemon uzak kullanıcı tarafından sıfırdan başlatıldığından, chroot gibi özellikleri kullanamayabilir veya daemon tarafından kullanılan uid değerini değiştiremeyebilirsiniz. (Bir daemon aktarımını şifrelemenin başka bir yolu için, uzak bir makineye yerel bir port tünellemek üzere ssh kullanmayı ve bu uzak sunucudaki normal bir rsync daemon'ını yalnızca "localhost" bağlantılarına izin verecek şekilde yapılandırmayı düşünün.)
Kullanıcı perspektifinden, uzak kabuk bağlantısı aracılığıyla bir daemon aktarımı, normal bir rsync-daemon aktarımıyla neredeyse aynı komut satırı sözdizimini kullanır; tek istisna, uzak kabuk programını komut satırında --rsh=KOMUT seçeneğiyle açıkça ayarlamanız gerektiğidir. (Ortamda RSYNC_RSH değişkeninin ayarlanması bu işlevi etkinleştirmez.) Örneğin:
rsync -av --rsh=ssh host::module /dest
Farklı bir uzak kabuk kullanıcısı belirtmeniz gerekiyorsa, sunucunun önündeki kullanıcı@ önekinin rsync-user değerini belirttiğini unutmayınız (kullanıcı tabanlı kimlik doğrulaması gerektiren bir modül için). Bu, uzak kabuğu belirtirken ssh komutuna '-l kullanıcı' seçeneğini vermeniz gerektiği anlamına gelir; --rsh seçeneğinin kısa sürümünü kullanan bu örnekte olduğu gibi:
rsync -av -e "ssh -l ssh-user" rsync-user@host::module /dest
"ssh-user" ssh düzeyinde kullanılacak; "rsync-user" ise "module" kısmına giriş yapmak için kullanılacaktır.
Bu kurulumda daemon, sisteme erişen ssh komutu tarafından başlatılır (istenirse ~/.ssh/authorized_keys dosyası aracılığıyla zorlanabilir). Ancak bir daemon'a doğrudan erişirken, bunun önceden başlatılmış olması gerekir.
Bağlantıları Kabul Etmek İçin Bir Rsync Daemon'ı Başlatma
Bir rsync daemon'ına bağlanmak için uzak sistemde halihazırda çalışan bir daemon olması gerekir (veya belirli bir porttaki gelen bağlantılar için bir rsync daemon'ı oluşturmak üzere inetd benzeri bir şeyin yapılandırılmış olması gerekir). Gelen soket bağlantılarını yönetecek bir daemon'ın nasıl başlatılacağına dair tam bilgi için rsyncd.conf(5) kılavuz sayfasına bakın; bu, daemon için yapılandırma dosyasıdır ve daemon'ın nasıl çalıştırılacağına dair tüm ayrıntıları içerir (bağımsız ve inetd yapılandırmaları dahil).
Aktarım için uzak kabuk taşıyıcılarından birini kullanıyorsanız, bir rsync daemon'ını manuel olarak başlatmanıza gerek yoktur.
Örnekler
Burada rsync'in nasıl kullanılabileceğine dair bazı örnekler verilmiştir.
Büyük MS Word dosyalarından ve e-posta klasörlerinden oluşan bir ev dizinini yedeklemek için, her gün
bunu çalıştıran kullanıcı başına bir cron görevi kullanılabilir:
rsync -aiz . bkhost:backup/joe/
Bazı dosyaları uzak bir sunucudan yerel sunucuya taşımak için şunu çalıştırabilirsiniz:
rsync -aiv --remove-source-files rhost:/tmp/{file1,file2}.c ~/src/
Seçenek Özeti
Burada rsync'te mevcut olan seçeneklerin kısa bir özeti yer almaktadır. Her seçeneğin bu kılavuz sayfasının ilerleyen kısımlarında kendi ayrıntılı açıklaması da bulunmaktadır.
--verbose, -v: ayrıntı düzeyini artırır--info=FLAGS: ince ayarlı bilgilendirme ayrıntısı--debug=FLAGS: ince ayarlı hata ayıklama ayrıntısı--stderr=e|a|c: stderr çıktı modunu değiştirir (varsayılan: hatalar)--quiet, -q: hata dışındaki mesajları bastırır--no-motd: daemon modu MOTD'sini bastırır--checksum, -c: değişiklik zamanı ve boyuta göre değil, sağlama toplamına (checksum) göre atlar--archive, -a: arşiv modu -rlptgoD seçeneğine eşittir (-A,-X,-U,-N,-H hariç)--no-OPTION: zımni bir seçeneği (OPTION) kapatır (örneğin --no-D)--recursive, -r: dizinlerin içine özyinelemeli olarak girer--relative, -R: göreli yol adlarını kullanır--no-implied-dirs: --relative ile zımni dizinleri göndermez--backup, -b: yedekler oluşturur (--suffix ve --backup-dir seçeneklerine bakınız)--backup-dir=DIR: DIR içinde hiyerarşik yedekler oluşturur--suffix=SUFFIX: yedekleme son eki (suffix) (--backup-dir olmadan varsayılan ~)--update, -u: alıcıda daha yeni olan dosyaları atlar--inplace: hedef dosyaları yerinde günceller--append: veriyi daha kısa dosyaların sonuna ekler--append-verify: dosya sağlama toplamındaki eski verilerle birlikte --append işlemi yapar--dirs, -d: özyineleme yapmadan dizinleri aktarır--old-dirs, --old-d: eski rsync ile konuşurken --dirs gibi çalışır--mkpath: hedefin eksik yol bileşenlerini oluşturur--links, -l: sembolik bağlantıları sembolik bağlantı olarak kopyalar--copy-links, -L: sembolik bağlantıyı başvurduğu dosya/dizine dönüştürür--copy-unsafe-links: yalnızca "güvensiz" sembolik bağlantılar dönüştürülür--safe-links: ağaç dışını gösteren sembolik bağlantıları göz ardı eder--munge-links: sembolik bağlantıları güvenli ve kullanılamaz hale getirmek için dönüştürür (munge)--copy-dirlinks, -k: dizine olan sembolik bağlantıyı başvurduğu dizine dönüştürür--keep-dirlinks, -K: alıcıdaki sembolik bağlantılı dizine dizin gibi davranır--hard-links, -H: sabit bağlantıları (hard link) korur--perms, -p: izinleri korur--fileflags: dosya bayraklarını korur (chflags)--executability, -E: çalıştırılabilirliği korur--chmod=CHMOD: dosya ve/veya dizin izinlerini etkiler--acls, -A: ACL'leri korur (--perms seçeneğini kapsar)--xattrs, -X: genişletilmiş öznitelikleri (extended attributes) korur--owner, -o: sahibini korur (yalnızca süper kullanıcı)--group, -g: grubu korur--devices: aygıt dosyalarını korur (yalnızca süper kullanıcı)--copy-devices: aygıt içeriklerini normal dosya olarak kopyalar--write-devices: aygıtlara dosya gibi yazar (--inplace seçeneğini kapsar)--specials: özel dosyaları korur-D: --devices --specials ile aynıdır--times, -t: değiştirilme zamanlarını korur--atimes, -U: erişim (kullanım) zamanlarını korur--open-noatime: açılan dosyalarda atime değerinin değişmesini önler--crtimes, -N: oluşturulma zamanlarını korur--omit-dir-times, -O: dizinleri --times seçeneğinden hariç tutar--omit-link-times, -J: sembolik bağlantıları --times seçeneğinden hariç tutar--super: alıcı süper kullanıcı eylemlerini dener--fake-super: ayrıcalıklı öznitelikleri xattrs kullanarak saklar/geri yükler--sparse, -S: sıfır dizilerini seyrek (sparse) bloklara dönüştürür--preallocate: hedef dosyaları yazmadan önce yer ayırır (preallocate)--dry-run, -n: değişiklik yapmadan bir deneme çalışması gerçekleştirir--whole-file, -W: dosyaları bütün olarak kopyalar (delta transfer algoritması olmadan)--checksum-choice=STR: sağlama toplamı algoritmasını seçer (--cc)--one-file-system, -x: dosya sistemi sınırlarını geçmez--block-size=SIZE, -B: sabit bir sağlama toplamı blok boyutunu zorlar--rsh=COMMAND, -e: kullanılacak uzak kabuğu belirtir--rsync-path=PROGRAM: uzak makinede çalıştırılacak rsync'i belirtir--existing: alıcıda yeni dosyalar oluşturulmasını atlar--ignore-existing: alıcıda mevcut olan dosyaların güncellenmesini atlar--remove-source-files: gönderici senkronize edilmiş dosyaları siler (dizin olmayanları)--del: --delete-during için bir takma addır--delete: hedef dizinlerden yabancı dosyaları siler--delete-before: alıcı aktarım sırasında değil, aktarımdan önce siler--delete-during: alıcı aktarım sırasında siler--delete-delay: silinecekleri aktarım sırasında bulur, aktarımdan sonra siler--delete-after: alıcı aktarım sırasında değil, aktarımdan sonra siler--delete-excluded: hariç tutulan dosyaları da hedef dizinlerden siler--ignore-missing-args: eksik kaynak argümanlarını hata vermeden göz ardı eder--delete-missing-args: eksik kaynak argümanlarını hedeften siler--ignore-errors: G/Ç (I/O) hataları olsa bile siler--force-delete: boş olmasalar bile dizinlerin silinmesini zorlar--force-change: kullanıcı/sistem tarafından değiştirilemez (immutable) dosya/dizinleri etkiler--force-uchange: kullanıcı tarafından değiştirilemez dosya/dizinleri etkiler--force-schange: sistem tarafından değiştirilemez dosya/dizinleri etkiler--max-delete=NUM: NUM değerinden fazla dosya silmez--max-size=SIZE: SIZE değerinden büyük dosyaları aktarmaz--min-size=SIZE: SIZE değerinden küçük dosyaları aktarmaz--max-alloc=SIZE: bellek tahsisiyle ilgili bir sınırı değiştirir--partial: kısmen aktarılmış dosyaları tutar--partial-dir=DIR: kısmen aktarılmış dosyaları DIR içine koyar--delay-updates: tüm güncellenmiş dosyaları en sonda yerlerine koyar--prune-empty-dirs, -m: dosya listesinden boş dizin zincirlerini temizler--numeric-ids: uid/gid değerlerini kullanıcı/grup adına göre eşlemez--usermap=STRING: özel kullanıcı adı eşlemesi--groupmap=STRING: özel grup adı eşlemesi--chown=USER:GROUP: basit kullanıcı/grup adı eşlemesi--timeout=SECONDS: G/Ç zaman aşımını saniye cinsinden ayarlar--contimeout=SECONDS: daemon bağlantı zaman aşımını saniye cinsinden ayarlar--ignore-times, -I: boyut ve zamanı eşleşen dosyaları atlamaz--size-only: yalnızca boyutu eşleşen dosyaları atlar--modify-window=NUM, -@: değiştirilme zamanı karşılaştırmalarının doğruluğunu ayarlar--temp-dir=DIR, -T: geçici dosyaları DIR dizininde oluşturur--fuzzy, -y: hedef dosya yoksa temel (basis) dosya için benzerini bulur--compare-dest=DIR: hedef dosyaları DIR dizine göre de karşılaştırır--copy-dest=DIR: ... ve değişmemiş dosyaların kopyalarını dahil eder--link-dest=DIR: değişmediğinde DIR içindeki dosyalara sabit bağlantı yapar--compress, -z: aktarım sırasında dosya verilerini sıkıştırır--compress-choice=STR: sıkıştırma algoritmasını seçer (--zc)--compress-level=NUM: sıkıştırma düzeyini açıkça ayarlar (--zl)--skip-compress=LIST: son eki LIST içinde olan dosyaların sıkıştırılmasını atlar--cvs-exclude, -C: dosyaları CVS ile aynı şekilde otomatik olarak göz ardı eder--filter=RULE, -f: bir dosya filtreleme kuralı (RULE) ekler-F: --filter='dir-merge /.rsync-filter' ile aynıdır tekrarlanırsa: --filter='- .rsync-filter'--exclude=PATTERN: PATTERN ile eşleşen dosyaları hariç tutar--exclude-from=FILE: hariç tutma şablonlarını FILE dosyasından okur--include=PATTERN: PATTERN ile eşleşen dosyaları hariç tutmaz--include-from=FILE: dahil etme şablonlarını FILE dosyasından okur--files-from=FILE: kaynak dosya adları listesini FILE dosyasından okur--from0, -0: tüm *-from/filter dosyaları null ('\0') ile ayrılmıştır--old-args: modern argüman koruma yöntemini devre dışı bırakır--secluded-args, -s: argümanları güvenli bir şekilde göndermek için protokolü kullanır--trust-sender: uzak göndericinin dosya listesine güvenir--copy-as=USER[:GROUP]: kopyalama için kullanıcı ve isteğe bağlı grubu belirtir--address=ADDRESS: daemon'a giden soket için adres bağlar--port=PORT: çift noktalı alternatif port numarasını belirtir--sockopts=OPTIONS: özel TCP seçeneklerini belirtir--blocking-io: uzak kabuk için engelleyici (blocking) G/Ç kullanır--outbuf=N|L|B: çıktı arabelleğe almayı None, Line veya Block olarak ayarlar--stats: bazı dosya aktarım istatistiklerini verir--8-bit-output, -8: çıktıda yüksek bitli karakterleri kaçışsız bırakır--human-readable, -h: sayıları insan tarafından okunabilir bir formatta çıktı olarak verir--progress: aktarım sırasında ilerlemeyi gösterir-P: --partial --progress ile aynıdır--itemize-changes, -i: tüm güncellemeler için bir değişiklik özeti çıktı olarak verir--remote-option=OPT, -M: OPTION seçeneğini yalnızca uzak tarafa gönderir--out-format=FORMAT: belirtilen FORMAT'ı kullanarak güncellemeleri çıktı olarak verir--log-file=FILE: ne yapıldığını belirtilen FILE dosyasına kaydeder (log)--log-file-format=FMT: belirtilen FMT kullanarak güncellemeleri kaydeder--password-file=FILE: daemon erişim şifresini FILE dosyasından okur--early-input=FILE: daemon'ın erken yürütme (early exec) girdisi için FILE dosyasını kullanır--list-only: dosyaları kopyalamak yerine listeler--bwlimit=RATE: soket G/Ç bant genişliğini sınırlar--stop-after=MINS: MINS dakika geçtikten sonra rsync'i durdurur--stop-at=y-m-dTh:m: rsync'i belirtilen zaman noktasında durdurur--fsync: yazılan her dosyayı fsync eder--write-batch=FILE: FILE dosyasına toplu (batch) bir güncelleme yazar--only-write-batch=FILE: --write-batch gibidir ancak hedefi güncellemez--read-batch=FILE: FILE dosyasından toplu bir güncellemeyi okur--protocol=NUM: eski bir protokol sürümünün kullanılmasını zorlar--iconv=CONVERT_SPEC: dosya adlarının karakter seti dönüşümünü talep eder--checksum-seed=NUM: blok/dosya sağlama toplamı tohumunu (seed) ayarlar (gelişmiş)--ipv4, -4: IPv4'ü tercih eder--ipv6, -6: IPv6'yı tercih eder--version, -V: sürümü ve diğer bilgileri yazdırıp çıkar--help, -h (*): bu yardımı gösterir (* tek başına kullanıldığında -h yalnızca yardımdır)
Rsync arka plan programı (daemon) olarak da çalıştırılabilir; bu durumda aşağıdaki seçenekler kabul edilir:
--daemon: bir rsync daemon olarak çalışır--address=ADDRESS: belirtilen adrese bağlanır (bind)--bwlimit=RATE: soket G/Ç bant genişliğini sınırlar--config=FILE: alternatif rsyncd.conf dosyasını belirtir--dparam=OVERRIDE, -M: global daemon yapılandırma parametresini geçersiz kılar--no-detach: üst işlemden (parent) ayrılmaz--port=PORT: alternatif port numarasını dinler--log-file=FILE: "log file" ayarını geçersiz kılar--log-file-format=FMT: "log format" ayarını geçersiz kılar--sockopts=OPTIONS: özel TCP seçeneklerini belirtir--verbose, -v: ayrıntı düzeyini artırır--ipv4, -4: IPv4'ü tercih eder--ipv6, -6: IPv6'yı tercih eder--help, -h: bu yardımı gösterir (--daemon ile kullanıldığında)
Seçenekler
Rsync hem uzun (çift tire + kelime) hem de kısa (tek tire + harf) seçenekleri kabul eder. Kullanılabilir seçeneklerin tam listesi aşağıda açıklanmıştır. Bir seçenek birden fazla şekilde belirtilebiliyorsa, seçenekler virgülle ayrılmıştır. Bazı seçeneklerin kısa varyantı olmayıp yalnızca uzun varyantı vardır.
Seçenek bir parametre alıyorsa, parametre kısa seçenek için de belirtilmesi gerekse bile yalnızca uzun varyanttan sonra listelenir. Bir parametre belirtirken, --option=param, --option param, -o=param, -o param veya -oparam biçimlerinden birini kullanabilirsiniz (son seçenekler seçeneğinizin kısa bir varyantı olduğunu varsayar).
Parametrenin, kabuğun komut satırı ayrıştırmasından etkilenmeden geçebilmesi için bir şekilde tırnak içine alınması gerekebilir. Ayrıca, bir yol adının başındaki tilde (~) işaretinin kabuğunuz tarafından değiştirileceğini unutmayınız; bu nedenle, yerel kabuğun bunu genişletmesini istiyorsanız seçenek adı ile yol adı arasına bir boşluk koyduğunuzdan emin olun.
--help: rsync'te mevcut olan seçenekleri açıklayan kısa bir yardım sayfası yazdırıp çıkar. --help için -h seçeneğini, başka herhangi bir seçenek olmadan kullanıldığında da kullanabilirsiniz (çünkü normalde --human-readable anlamına gelir).
--version, -V Rsync sürümünü ve diğer bilgileri yazdırıp çıkar. Tekrarlandığında, çıktı bilgileri hala oldukça okunabilir bir JSON formatındadır (yalnızca istemci tarafında).
Çıktı; derlenmiş yeteneklerin bir listesini, optimizasyonların bir listesini, varsayılan sağlama toplamı algoritmalarının bir listesini, varsayılan sıkıştırma algoritmalarının bir listesini, varsayılan daemon kimlik doğrulama özetlerinin bir listesini, rsync web sitesine bir bağlantıyı ve birkaç diğer öğeyi içerir.
--verbose, -v Bu seçenek, aktarım sırasında size verilen bilgi miktarını artırır. Varsayılan olarak rsync sessizce çalışır. Tek bir -v, hangi dosyaların aktarıldığına dair bilgi ve sonda kısa bir özet verir. İki -v seçeneği, hangi dosyaların atlandığına dair bilgi ve sonda biraz daha fazla bilgi verir. İkiden fazla -v seçeneği yalnızca rsync hata ayıklaması yapıyorsanız kullanılmalıdır.
Çalışma sonu özeti size; uzak rsync'e (yerel bir kopyalamada alıcı taraf olan) gönderilen bayt sayısını, uzak sunucudan alınan bayt sayısını ve rsync çalışmasının tüm süresi boyunca hesaplanan aktarılan verilerin saniye başına ortalama bayt değerini söyler. İkinci satır, rsync'in aktarmayı düşündüğü tüm dosya boyutlarının toplamı olan toplam boyutu (bayt cinsinden) gösterir. Ayrıca, toplam dosya boyutunun gönderilen ve alınan baytların toplamına bölünmesiyle elde edilen bir oran olan bir "hızlanma" (speedup) değerini gösterir (bu aslında sadece kendinizi iyi hissettiren, ne kadar büyükse o kadar iyi olan bir sayıdır). Bu bayt değerlerinin, --human-readable (veya --no-human-readable) seçenekleri kullanılarak insan tarafından daha fazla (veya daha az) okunabilir hale getirilebileceğini unutmayınız.
Modern bir rsync'te, -v seçeneği --info ve --debug seçenek gruplarının ayarlanmasına eşdeğerdir. Bu yeni seçenekleri --verbose seçeneğine ek olarak veya onun yerine kullanmayı seçebilirsiniz; çünkü herhangi bir ince ayarlı ayar, -v seçeneğinin zımni ayarlarını geçersiz kılar. Hem --info ve --debug, ayrıntı düzeyindeki her artış için tam olarak hangi bayrakların ayarlandığını söyleyen bir yardım isteme yoluna sahiptir.
Bununla birlikte, bir daemon'ın "maksimum ayrıntı" (max verbosity) ayarının, çeşitli bireysel bayrakların daemon tarafında ne kadar yüksek bir seviyeye ayarlanabileceğini sınırlayacağını unutmayınız. Örneğin, maksimum değer 2 ise, -vv tarafından ayarlanacak olandan daha yüksek bir değere ayarlanan herhangi bir info ve/veya debug bayrağı, daemon günlüğünde -vv seviyesine düşürülecektir.
--info=FLAGS Bu seçenek, görmek istediğiniz bilgi çıktısı üzerinde ince ayarlı denetim sahibi olmanızı sağlar. Bireysel bir bayrak adından sonra bir seviye numarası gelebilir; 0 bu çıktıyı sessize almak, 1 varsayılan çıktı seviyesi olmak ve daha yüksek sayılar o bayrağın çıktısını artırmak anlamına gelir (daha yüksek seviyeleri destekleyenler için). Kullanılabilir tüm bayrak adlarını, ne çıktı verdiklerini ve ayrıntı seviyesindeki her artış için hangi bayrak adlarının eklendiğini görmek için --info=help seçeneğini kullanın. Bazı örnekler:
rsync -a --info=progress2 src/ dest/ rsync -avv --info=stats2,misc1,flist0 src/ dest/
--info=name çıktısının --out-format ve --itemize-changes (-i) seçeneklerinden etkilendiğini unutmayınız. Neyin ne zaman çıktı olarak verileceğine dair daha fazla bilgi için bu seçeneklere bakınız.
Bu seçenek 3.1.0 sürümünde eklenmiştir; dolayısıyla sunucu tarafındaki daha eski bir rsync, ince ayarlı denetim girişimlerinizi reddedebilir (bir veya daha fazla bayrağın sunucuya gönderilmesi gerekiyorsa ve sunucu bunu anlayamayacak kadar eskiyse). Bir daemon ile uğraşırken yukarıdaki "maksimum ayrıntı" uyarısına da bakınız.
--debug=FLAGS Bu seçenek, görmek istediğiniz hata ayıklama çıktısı üzerinde ince ayarlı denetim sahibi olmanızı sağlar. Bireysel bir bayrak adından sonra bir seviye numarası gelebilir; 0 bu çıktıyı sessize almak, 1 varsayılan çıktı seviyesi olmak ve daha yüksek sayılar o bayrağın çıktısını artırmak anlamına gelir (daha yüksek seviyeleri destekleyenler için). Kullanılabilir tüm bayrak adlarını, ne çıktı verdiklerini ve ayrıntı seviyesindeki her artış için hangi bayrak adlarının eklendiğini görmek için --debug=help seçeneğini kullanın. Bazı örnekler:
rsync -avvv --debug=none src/ dest/ rsync -avA --del --debug=del2,acl src/ dest/
Bazı hata ayıklama mesajlarının, özellikle G/Ç ve arabellek hata ayıklamasıyla ilgili olanların, yalnızca --stderr=all seçeneği belirtildiğinde çıktı olarak verileceğini unutmayınız.
3.2.0 sürümünden başlayarak, aktarımın her iki tarafı için farklı hata ayıklama değerleri belirtebilmenize olanak tanımak ve ayrıca yalnızca rsync sürümlerinden birinde bulunan yeni bir hata ayıklama seçeneği belirtebilmenize imkan sağlamak için bu seçenek artık sunucu tarafına otomatik olarak iletilmemektedir. Aynı seçeneği her iki tarafta da yinelemek istiyorsanız, küme parantezi genişletmesi kullanmak yazma zahmetinden tasarruf etmenin kolay bir yoludur. Bu zsh ve bash kabuklarında çalışır:
rsync -aiv {-M,}--debug=del2 src/ dest/
--stderr=errors|all|client Bu seçenek, hangi işlemlerin stderr'e çıktı vereceğini ve bilgilendirme mesajlarının da stderr'e yönlendirilip yönlendirilmeyeceğini kontrol eder. Mod karakter dizileri kısaltılabilir, bu nedenle tek harfli bir değer kullanmaktan çekinmeyin. Olası 3 seçenek şunlardır:
o errors - (varsayılan) aktarımın uzak tarafında olsa bile tüm rsync işlemlerinin doğrudan stderr'e bir hata göndermesine neden olur. Bilgilendirme mesajları, protokol akışı aracılığıyla istemci tarafına gönderilir. Stderr mevcut değilse (yani bir soket aracılığıyla doğrudan bir daemon ile bağlanıldığında), hatalar protokol akışı aracılığıyla gönderilmeye geri döner.
o all - tüm rsync mesajlarının (bilgi ve hata) tüm (olası) işlemlerden doğrudan stderr'e yazılmasına neden olur. Bu, stderr'in ham yerine satır arabellekli (line-buffered) olmasına neden olur ve bilgi ile hata mesajlarını dosya tanıtıcısına göre bölme yeteneğini ortadan kaldırır. Hata ayıklama yapanlar veya birkaç ayrıntı düzeyi kullananlar için bu seçenek, aktarım akışının tıkanmasını önlemeye yardımcı olabilir (bi durum, herhangi bir kilitlenme hatasının işleri askıya alması olasılığını engellemelidir). Ayrıca --debug seçeneğinin G/Ç ile ilgili bazı ekstra mesajları etkinleştirmesine olanak tanır.
o client - tüm rsync mesajlarının protokol akışı aracılığıyla istemci tarafına gönderilmesine neden olur. Bir istemci işlemi tüm mesajları çıktı olarak verir; hatalar stderr'de, bilgi mesajları ise stdout'ta yer alır. Bu, daha eski rsync sürümlerinde varsayılandı, ancak çok sayıda aktarım verisi mesajların önünde olduğunda hata gecikmelerine neden olabilir. Dosyaları daha eski bir rsync'e itiyorsanız, bu yöntem birkaç sürümdür mevcut olduğundan --stderr=all seçeneğini kullanmak isteyebilirsiniz.
Bu seçenek rsync 3.2.3 sürümünde eklenmiştir. Bu sürüm ayrıca varsayılan olmayan bir ayarın uzak tarafa iletilmesine de başladı; ancak rsync sırasıyla all ve client ayarlarını temsil etmek için geriye dönük uyumlu --msgs2stderr ve --no-msgs2stderr seçeneklerini kullanır. Daha yeni bir rsync, uyumluluğu korumak için bu eski seçenek adlarını kabul etmeye devam edecektir.
--quiet, -q Bu seçenek, aktarım sırasında size verilen bilgi miktarını azaltır; özellikle uzak sunucudan gelen bilgilendirme mesajlarını bastırır. Bu seçenek, rsync'i cron'dan çağırırken yararlıdır.
--no-motd Bu seçenek, bir daemon aktarımının başlangıcında istemci tarafından çıktı olarak verilen bilgileri etkiler. Bu seçenek günün mesajı (MOTD) metnini bastırır, ancak aynı zamanda daemon'ın "rsync host::" isteğine yanıt olarak gönderdiği modül listesini de etkiler (rsync protokolündeki bir sınırlama nedeniyle); bu nedenle daemon'dan modül listesini talep etmek istiyorsanız bu seçeneği atlayın.
--ignore-times, -I Normalde rsync, zaten aynı boyutta olan ve aynı değiştirilme zaman damgasına sahip olan tüm dosyaları atlar. Bu seçenek, bu "hızlı kontrol" davranışını kapatarak tüm dosyaların güncellenmesine neden olur.
Bu seçenek, rsync'in daha az dosya aktarmasına neden olmaları bakımından --ignore-existing ve --ignore-non-existing seçenekleriyle karşılaştırıldığında kafa karıştırıcı olabilir; oysa bu seçenek rsync'in daha fazla dosya aktarmasına neden olur.
--size-only Bu seçenek, rsync'in aktarılması gereken dosyaları bulmaya yönelik "hızlı kontrol" algoritmasını değiştirir; bunu, değişen boyuta veya değişen son değiştirilme zamanına sahip dosyaları aktarma varsayılanından, yalnızca boyutu değişen dosyaları arayacak şekilde değiştirir. Bu seçenek, zaman damgalarını tam olarak korumayabilecek başka bir aynalama sistemi kullandıktan sonra rsync kullanmaya başlarken yararlıdır.
--modify-window=NUM, -@ İki zaman damgasını karşılaştırırken rsync, zaman damgaları modify-window değerinden daha fazla farklılık göstermiyorsa bunları eşit kabul eder. Varsayılan değer 0'dır ve yalnızca tam sayı saniyeleri eşleştirir. Negatif bir değer belirtirseniz (ve alıcı en az 3.1.3 sürümündeyse), nanosaniyeler de dikkate alınacaktır. 1 değerinin belirtilmesi, MS Windows FAT dosya sistemlerine/dosya sistemlerinden yapılan kopyalamalar için yararlıdır; çünkü FAT zamanları 2 saniyelik bir çözünürlükle temsil eder (zamanların orijinalinden 1 saniyeye kadar farklılık göstermesine izin verir).
Tüm aktarımlarınızın varsayılan olarak nanosaniyeleri karşılaştırmasını istiyorsanız, bir ~/.popt dosyası oluşturup içine şu satırları koyabilirsiniz:
rsync alias -a -a@-1 rsync alias -t -t@-1
Bu varsayılan olduğunda, nanosaniyeleri yoksaymak ve bunu geçersiz kılmak için --modify-window=0 (yani -@0) belirtmeniz gerekir; örneğin ext3 ve ext4 arasında kopyalama yapıyorsanız, veya alıcı rsync 3.1.3'ten daha eskiyse.
--checksum, -c Bu seçenek, rsync'in dosyaların değişip değişmediğini ve bir aktarıma ihtiyaç duyup duymadığını kontrol etme şeklini değiştirir. Bu seçenek olmadan rsync, her dosyanın boyutunun ve son değiştirilme zamanının gönderen ile alıcı arasında eşleşip eşleşmediğini (varsayılan olarak) kontrol eden bir "hızlı kontrol" kullanır. Bu seçenek, bunu boyutu eşleşen her dosya için 128 bitlik bir sağlama toplamını karşılaştıracak şekilde değiştirir. Sağlama toplamlarının üretilmesi, her iki tarafın da aktarımdaki dosyalardaki tüm verileri okurken çok fazla disk G/Ç harcayacağı anlamına gelir; bu nedenle bu işlem işleri önemli ölçüde yavaşlatabilir (ve bu, değişen dosyaları aktarmak için yapılacak herhangi bir okumadan öncedir).
Gönderen taraf, kullanılabilir dosyaların listesini oluşturan dosya sistemi taramasını yaparken sağlama toplamlarını üretir. Alıcı taraf, değişen dosyaları tararken sağlama toplamlarını üretir ve gönderenin karşılık gelen dosyasıyla aynı boyuta sahip olan her dosyanın sağlama toplamını hesaplar: değişen boyuta veya değişen sağlama toplamına sahip dosyalar aktarım için seçilir.
Rsync'in, aktarılan her dosyanın alıcı tarafta doğru bir şekilde yeniden oluşturulduğunu, dosya aktarılırken üretilen bir bütün-dosya sağlama toplamını (whole-file checksum) kontrol ederek her zaman doğruladığını unutmayınız; ancak bu otomatik aktarım sonrası doğrulamanın, bu seçeneğin aktarım öncesi "Bu dosyanın güncellenmesi gerekiyor mu?" kontrolüyle hiçbir ilgisi yoktur.
Kullanılan sağlama toplamı istemci ve sunucu arasında otomatik olarak müzakere edilir, ancak --checksum-choice (--cc) seçeneği veya bu seçeneğin bölümünde tartışılan bir ortam değişkeni kullanılarak geçersiz kılınabilir.
--archive, -a Bu seçenek -rlptgoD seçeneğine eşdeğerdir. Özyineleme (recursion) istediğinizi ve neredeyse her şeyi korumak istediğinizi söylemenin hızlı bir yoludur. ACL'lerin (-A), xattrs (-X), atimes (-U), crtimes (-N) korunmasını ve sabit bağlantıların (-H) bulunup korunmasını içermediğini unutmayınız. Ayrıca --fileflags seçeneğini de kapsamaz.
Yukarıdaki eşdeğerliğin tek istisnası, --files-from seçeneğinin belirtildiği durumdur; bu durumda -r seçeneği zımnen içermez.
--no-OPTION Seçenek adının önüne "no-" öneki getirerek bir veya daha fazla zımni seçeneği kapatabilirsiniz. Pozitif seçeneklerin hepsinin olumsuz bir karşılığı yoktur, ancak zımni bir seçeneği devre dışı bırakmak için kullanılabilenler (örneğin --no-D, --no-perms) veya çeşitli durumlarda farklı varsayılanlara sahip olanlar (örneğin --no-whole-file, --no-blocking-io, --no-dirs) dahil olmak üzere birçok seçeneğin vardır. Geçerli her olumsuz seçenek, "no-" önekinden sonra hem kısa hem de uzun seçenek adını kabul eder (örneğin --no-R, --no-relative ile aynıdır).
Örnek olarak, --archive (-a) seçeneğini kullanmak istiyor ancak --owner (-o) seçeneğini istemiyorsanız, -a seçeneğini -rlptgD seçeneğine dönüştürmek yerine -a --no-o (yani --archive --no-owner) belirtebilirsiniz.
Seçeneklerin sırası önemlidir: --no-r -a belirtirseniz, -r seçeneği sonuçta açılacaktır; bu da -a --no-r seçeneğinin tam tersidir. Ayrıca --files-from seçeneğinin yan etkilerinin konumsal OLMADIĞINI unutmayınız; çünkü bu seçenek birkaç seçeneğin varsayılan durumunu etkiler ve -a seçeneğinin anlamını hafifçe değiştirir (daha fazla ayrıntı için --files-from seçeneğine bakınız).
--recursive, -r Bu seçenek rsync'e dizinleri özyinelemeli olarak kopyalamasını söyler. Tek bir dizinin taranmasına izin veren bir seçenek için --dirs (-d) seçeneğine de bakınız.
Aktarılacak dosyaların listesini oluşturmak için artımlı özyinelemenin tartışılması için --inc-recursive seçeneğine bakınız.
--inc-recursive, --i-r Bu seçenek, dosyaları tararken artımlı özyinelemeyi (incremental recursion) açıkça etkinleştirir; bu özellik --recursive seçeneği kullanıldığında ve aktarımın her iki tarafı de rsync 3.0.0 veya daha yeni bir sürüm çalıştırdığında varsayılan olarak etkindir.
Artımlı özyineleme, artımlı olmayana göre çok daha az bellek kullanırken, aktarımı da daha hızlı başlatır (çünkü dosya aktarmaya başlamadan önce tüm aktarım hiyerarşisini taraması gerekmez). Kaynak dosyalarda özyineleme etkinleştirilmemişse bu seçeneğin hiçbir etkisi yoktur.
--relative, -R Bu seçenek, rsync'e özyinelemeli aktarımlar sırasında kullanılan göreli yol adlarını göndermesini söyler. Bu, hedef tarafta tam yolların yeniden oluşturulmasını istediğiniz anlamına gelir. Normalde rsync, kopyalanan dosyaların en sonundaki yol bileşenini hedefe yerleştirir; böylece aktarım dizini düzleştirilir. --relative seçeneğini belirttiğinizde ise kopyalanan yollar tam olarak gönderilir.
Örneğin, şu komutu çalıştırdığınızda:
rsync -ai /files/bar.c /dest/
Bu komut, /files/bar.c dosyasını /dest/bar.c dizinine kopyalar. Ancak şu komutu çalıştırırsanız:
rsync -aiR /files/bar.c /dest/
Bu komut, /files/bar.c dosyasını /dest/files/bar.c dizinine kopyalar; yani tüm yol bileşenleri korunur.
İki veya daha fazla kaynak belirtildiğinde de kurallar aynıdır. Ayrıca, yolun hangi kısımlarının göreli olarak kabul edileceğini kontrol etmek için kaynak yolunun içine bir nokta ve eğik çizgi (./) ekleyebilirsiniz. Örneğin:
rsync -aiR /files/./bar.c /dest/
Bu durumda /files/ kısmı göreli yolun bir parçası olarak gönderilmez, sadece /dest/bar.c olarak kopyalanır. Bir diğer örnek:
rsync -aiR /a/b/./c/d/e.txt /dest/
Bu komut, e.txt dosyasını /dest/c/d/e.txt olarak kopyalar.
--no-implied-dirs Bu seçenek, --relative seçeneğiyle birlikte kullanıldığında etkindir. Varsayılan olarak rsync, kopyalanan dosyaların yol bileşenlerindeki ara dizinlerin (örneğin yukarıdaki /dest/files dizini gibi) özniteliklerini (izinler, sahiplik vb.) korumak için bu dizinleri de aktarım listesine zımnen dahil eder. --no-implied-dirs seçeneğini belirttiğinizde ise bu ara dizinler gönderilmez; hedef taraf eksik olan ara dizinleri varsayılan izinlerle otomatik olarak oluşturur ancak özniteliklerini kaynaktan kopyalamaz. Bu, özellikle hedefteki ara dizinlerin mevcut izinlerinin değişmesini istemediğinizde yararlıdır.
--backup, -b Bu seçenekle rsync, hedef tarafta üzerine yazılacak veya silinecek dosyaların birer yedeğini oluşturur. Yedek dosyalarının nereye konulacağını veya hangi son eki alacağını --backup-dir ve --suffix seçenekleriyle denetleyebilirsiniz.
Varsayılan olarak yedek dosyaları, orijinal dosyanın bulunduğu dizine ve sonuna bir tilde () karakteri eklenerek yazılır (örneğin dosya.txt).
--backup-dir=DIR Bu seçenek, rsync'e yedeklenen dosyaları belirtilen DIR dizinine yerleştirmesini söyler. Bu dizin hedef tarafta oluşturulur. Yedeklenen dosyaların göreli yolları DIR dizini altında aynen korunur; böylece düzenli bir yedekleme hiyerarşisi elde edersiniz.
Bu seçeneğin kullanılması, --backup seçeneğini de zımnen etkinleştirir. DIR dizini için göreli bir yol belirtilirse, bu yol hedef dizine göre göreli olarak kabul edilir.
--suffix=SUFFIX Bu seçenek, varsayılan yedekleme son eki olan tilde (~) karakterini SUFFIX karakter dizisiyle geçersiz kılar. Örneğin, --suffix=.bak derseniz yedek dosyaları dosya.txt.bak adını alır.
--backup-dir seçeneği belirtildiğinde, varsayılan olarak herhangi bir ek son ek uygulanmaz. Ancak hem --backup-dir hem de --suffix seçeneklerini aynı anda belirterek yedeklerin hem ayrı bir dizine taşınmasını hem de belirli bir son ek almasını sağlayabilirsiniz.
--update, -u Bu seçenek rsync'e alıcı tarafta zaten mevcut olan ve son değiştirilme zamanı gönderen taraftakinden daha yeni (veya aynı) olan dosyaların güncellenmesini atlamasını söyler.
Nanosaniye çözünürlüğü etkinse ve iki dosyanın değiştirilme zamanları arasındaki fark çok küçükse, alıcı taraftaki dosya daha yeni kabul edilerek güncellenmeyebilir. Ayrıca, alıcı taraftaki dosya ile gönderen taraftaki dosya aynı boyutta ve zamandaysa da dosya atlanır.
--inplace Bu seçenek, rsync'in güncellenen dosyaları yazma biçimini değiştirir. Varsayılan olarak rsync, güncellenecek dosya için geçici bir dosya (temp-file) oluşturur, veriyi bu geçici dosyaya yazar ve işlem başarıyla tamamlandığında eski dosyanın üzerine yazar (yeniden adlandırır). Bu varsayılan yöntem oldukça güvenlidir çünkü aktarım kesintiye uğrasa bile orijinal dosya zarar görmez.
--inplace seçeneği belirtildiğinde ise rsync geçici bir dosya oluşturmaz; bunun yerine veriyi doğrudan hedef dosyanın üzerine yazar.
Bu seçeneğin bazı önemli yan etkileri vardır:
o Dosyanın üzerine doğrudan yazıldığı için, güncelleme sırasında dosyayı okuyan diğer işlemler dosyanın tutarsız veya kısmi bir sürümünü görebilir.
o Aktarım yarıda kesilirse, hedef dosya bozulmuş veya kısmen güncellenmiş durumda kalır.
o Dosyadaki bloklar yerinde güncellendiği için, hedef dosyanın sabit bağlantıları (hard link) varsa bu sabit bağlantılar da bu güncellemeden etkilenir.
o Dosyaya doğrudan yazma yeteneği için alıcı tarafta yazma izni gereklidir (varsayılan yöntemde ise dizine yazma izni olması yeterlidir).
o --partial seçeneğiyle uyumsuzdur ve --delay-updates seçeneğiyle çakışır.
Bu seçenek, özellikle çok büyük dosyaların güncellenmesinde disk alanından tasarruf etmek ve G/Ç yükünü azaltmak amacıyla kullanılır.
--append Bu seçenek rsync'e veriyi doğrudan hedef dosyanın sonuna eklemesini söyler. Gönderen taraf, hedef dosyanın boyutunu temel alır ve yalnızca bu boyuttan sonraki verileri gönderer. Dosyanın mevcut kısmının içeriğinin aynı olduğu varsayılır (herhangi bir doğrulama yapılmaz). Aktarım tamamlandıktan sonra dosyanın tamamının doğrulanması için bütün-dosya sağlama toplamı kontrolü yapılır.
Eğer alıcı taraftaki dosya gönderen taraftakinden daha büyükse veya mevcut veri farklıysa, dosya bozulabilir. Bu nedenle bu seçenek yalnızca sonuna sürekli veri eklenen (örneğin günlük dosyaları gibi) dosyalar için kullanılmalıdır.
--append-verify Bu seçenek --append seçeneğine çok benzer; ancak rsync, dosyanın sonuna yeni veri eklemeden önce mevcut kısmın sağlama toplamını hesaplayarak doğrular. Eğer mevcut kısmın sağlama toplamı eşleşmezse, rsync dosyayı en baştan itibaren normal bir şekilde aktarmaya karar verir.
--dirs, -d Bu seçenek rsync'e dizinleri aktarma listesine eklemesini söyler; ancak --recursive (-r) seçeneğinin aksine dizinlerin içindekileri özyinelemeli olarak taramaz. Yalnızca belirtilen dizinlerin kendilerini (ve özniteliklerini) kopyalar.
Eğer özyineleme yapmadan sadece belirli dizinlerin kendilerini kopyalamak istiyorsanız bu seçeneği kullanabilirsiniz.
--old-dirs, --old-d Bu seçenek, rsync'in çok eski sürümleriyle (sürüm 2.6.3 ve öncesi) konuşurken --dirs seçeneğinin düzgün çalışmasını sağlamak için kullanılır. Modern rsync bu seçeneği otomatik olarak yönetir.
--mkpath Bu seçenek rsync'e hedef taraftaki eksik olan tüm yol bileşenlerini (dizinleri) oluşturmasını söyler. Örneğin, rsync /src/file /dest/sub/dir/file komutunu çalıştırırken /dest/sub/dir dizini mevcut değilse, rsync bu dizinleri otomatik olarak oluşturacaktır.
--links, -l Bu seçenek rsync'in sembolik bağlantıları (symlinks) hedef tarafta da sembolik bağlantı olarak yeniden oluşturmasını sağlar. Bu seçenek belirtilmezse, sembolik bağlantılar sessizce göz ardı edilir (veya --copy-links seçeneği etkinse başvurdukları dosyalara dönüştürülür).
--archive (-a) seçeneği bu seçeneği zımnen etkinleştirir.
--copy-links, -L Bu seçenek rsync'in sembolik bağlantıları "çökertmesini" (collapse) sağlar. Sembolik bağlantının kendisini kopyalamak yerine, sembolik bağlantının işaret ettiği (hedef aldığı) gerçek dosya veya dizini kopyalar.
--copy-unsafe-links Bu seçenek rsync'in yalnızca "güvensiz" sembolik bağlantıları gerçek dosya veya dizinlere dönüştürerek kopyalamasını, "güvenli" sembolik bağlantıları ise olduğu gibi sembolik bağlantı olarak kopyalamasını sağlar.
Bir sembolik bağlantı, mutlak bir yol gösteriyorsa (başında / varsa) veya aktarım ağacının dışına çıkacak kadar çok sayıda ".." bileşeni içeriyorsa "güvensiz" kabul edilir.
--safe-links Bu seçenek rsync'e aktarım sırasında bulunan güvensiz sembolik bağlantıları (yani aktarım ağacının dışına işaret edenleri) alıcı tarafta oluşturmamasını söyler. Bu, özellikle uzak sunucunun güvenilmeyen sembolik bağlantılar içerdiği durumlarda güvenlik sağlamak için yararlıdır.
--munge-links Bu seçenek rsync'e sembolik bağlantıların hedeflerini değiştirerek (dönüştürerek) onları hedef dosya sisteminde geçersiz ve zararsız hale getirmesini söyler. Bu işlem sembolik bağlantının önüne "/rsyncd-munged/" öneki eklenerek yapılır.
Örneğin, /etc/passwd dosyasını gösteren bir sembolik bağlantı "/rsyncd-munged/etc/passwd" haline gelir ve bu yol mevcut olmadığı için bağlantı çalışmaz.
Bu özellik, güvenilmeyen kaynaklardan alınan dosyaların sistemdeki hassas dosyalara zarar vermesini engellemek için idealdir. Dönüştürülmüş bağlantıları daha sonra geri yüklemek için özel betikler kullanılabilir.
--copy-dirlinks, -k Bu seçenek rsync'e yalnızca dizinleri işaret eden sembolik bağlantıları gerçek dizinlere dönüştürmesini söyler. Dosyaları işaret eden sembolik bağlantılar ise normal kurallara göre kopyalanır.
--keep-dirlinks, -K Bu seçenek rsync'e alıcı tarafta zaten bir dizini işaret eden bir sembolik bağlantı mevcutsa, bu sembolik bağlantıyı korumasını ve dosyaları bu sembolik bağlantının gösterdiği gerçek dizinin içine kopyalamasını söyler.
Bu seçenek belirtilmezse rsync, alıcı taraftaki bu sembolik bağlantıyı silebilir ve yerine gerçek bir dizin oluşturabilir.
--hard-links, -H Bu seçenek rsync'in kaynak taraftaki sabit bağlantılı (hard-linked) dosyaları tespit etmesini ve hedef tarafta da bunları sabit bağlantılı olarak yeniden oluşturmasını sağlar.
Bu seçenek etkinleştirildiğinde rsync, kaynak taraftaki tüm dosyaların aygıt ve inode numaralarını izler. Aynı inode numarasına sahip birden fazla dosya bulunduğunda, hedef tarafta bu dosyalar arasında sabit bağlantılar kurulur. Bu işlem ek bellek ve işlem gücü gerektirir.
--perms, -p Bu seçenek rsync'e dosyaların ve dizinlerin izinlerini (permissions) hedef tarafta aynen korumasını söyler.
Bu seçenek belirtilmezse, hedef dosyaların izinleri alıcı taraftaki varsayılan umask değerine ve rsync'in varsayılan kurallarına göre belirlenir.
--fileflags Bu seçenek, macOS gibi işletim sistemlerinde bulunan dosya bayraklarını (file flags - örneğin salt okunur, sistem, değiştirilemez vb.) korur. Alıcı taraftaki dosya sisteminin bu bayrakları (chflags aracılığıyla) desteklemesi gerekir.
--executability, -E Bu seçenek rsync'in yalnızca çalıştırılabilirlik (executable) izin bayrağını korumasını sağlar. Bu, --perms seçeneği kullanılmadan yalnızca dosyaların çalıştırılabilir olup olmadığının korunması istendiğinde yararlıdır.
--chmod=CHMOD Bu seçenek rsync'in aktarılan dosya ve dizinlerin izinlerini belirtilen kurallara göre değiştirmesini sağlar. Kurallar chmod komutundaki gibi sembolik veya sayısal biçimde belirtilebilir.
Örneğin, --chmod=Dg+s,ug+w,Fo-w seçeneği dizinlere setgid bayrağı ekler, kullanıcı ve gruba yazma izni verir ve dosyaların diğer kullanıcılar için yazma iznini kaldırır.
--acls, -A Bu seçenek rsync'in dosya ve dizinlerin Erişim Denetim Listelerini (ACL - Access Control Lists) hedef tarafta aynen korumasını sağlar. Bu seçenek --perms seçeneğini de zımnen etkinleştirir. Alıcı işletim sisteminin ACL'leri desteklemesi gerekir.
--xattrs, -X Bu seçenek rsync'in dosya ve dizinlerin genişletilmiş özniteliklerini (extended attributes - xattrs) hedef tarafta aynen korumasını sağlar. xattrs, işletim sistemlerinin dosyalar hakkında sakladığı ek meta verilerdir (örneğin macOS'taki karantina bayrakları veya etiketler).
--owner, -o Bu seçenek rsync'e dosyaların sahipliğini (owner) hedef tarafta aynen korumasını söyler. Bu seçeneğin çalışması için alıcı tarafta rsync'in süper kullanıcı (root) olarak çalıştırılması gerekir.
--group, -g Bu seçenek rsync'e dosyaların grup sahipliğini (group) hedef tarafta aynen korumasını söyler. Eğer alıcı tarafta rsync süper kullanıcı olarak çalışmıyorsa, yalnızca kullanıcının üye olduğu gruplar korunabilir.
--devices Bu seçenek rsync'in karakter ve blok aygıt dosyalarını (device files) hedef tarafta aynen oluşturmasını sağlar. Bu seçeneğin çalışması için alıcı tarafta rsync'in süper kullanıcı olarak çalıştırılması gerekir.
--copy-devices Bu seçenek rsync'in aygıt dosyalarının kendilerini kopyalamak yerine, aygıtın içindeki ham verileri (contents) normal bir dosya gibi okuyup hedefe kopyalamasını sağlar.
--write-devices Bu seçenek rsync'in alıcı taraftaki mevcut aygıt dosyalarına normal bir dosya gibi yazmasını sağlar. Bu seçenek --inplace seçeneğini de zımnen etkinleştirir.
--specials Bu seçenek rsync'in adlandırılmış soketler (sockets) ve FIFO'lar (fifos) gibi özel dosyaları hedef tarafta aynen oluşturmasını sağlar.
-D
Bu seçenek --devices --specials seçeneklerine eşdeğerdir. Cihazları ve özel dosyaları korumanın hızlı bir yoludur.
--times, -t Bu seçenek rsync'e dosya ve dizinlerin son değiştirilme zamanlarını (modification times) hedef tarafta aynen korumasını söyler. Bu seçeneğin kullanılması önemle tavsiye edilir çünkü hızlı kontrol algoritması bu zamana güvenir.
--atimes, -U Bu seçenek rsync'in dosya ve dizinlerin son erişim zamanlarını (access times) hedef tarafta aynen korumasını sağlar.
--open-noatime
Bu seçenek rsync'e dosyaları okumak için açarken son erişim zamanlarının (atime) değişmesini önlemek için işletim sisteminin sunduğu O_NOATIME bayrağını kullanmasını söyler. Bu, dosyaları okurken disk yazma işlemlerini azaltmaya yardımcı olur.
--crtimes, -N Bu seçenek, macOS gibi işletim sistemlerinde desteklenen dosya oluşturulma zamanlarını (creation times - crtimes) hedef tarafta aynen korur.
--omit-dir-times, -O Bu seçenek rsync'e dizinlerin son değiştirilme zamanlarını güncellemeyi atlamasını söyler. Dizinlerin içindeki dosyalar değiştikçe dizin zamanı zaten değişeceği için, dizin zamanlarını korumaya çalışmamak performansı artırabilir.
--omit-link-times, -J Bu seçenek rsync'e sembolik bağlantıların son değiştirilme zamanlarını güncellemeyi atlamasını söyler. Bazı işletim sistemleri sembolik bağlantı zamanlarının değiştirilmesine izin vermez, bu durumlarda bu seçeneğin kullanılması yararlıdır.
--super Bu seçenek rsync'e alıcı tarafta süper kullanıcı (root) ayrıcalıkları gerektiren eylemleri (sahiplik belirleme, aygıt dosyaları oluşturma vb.) denemesini söyler; rsync süper kullanıcı olarak çalışmıyor olsa bile bu eylemler denenecektir.
--fake-super Bu seçenek rsync'e dosya sahipliği, izinler, aygıtlar ve özel dosyalar gibi yalnızca süper kullanıcı tarafından yapılabilecek işlemleri, genişletilmiş öznitelikler (xattrs) içinde özel meta veriler olarak saklamasını söyler.
Bu sayede, rsync alıcı tarafta süper kullanıcı ayrıcalıklarına sahip olmasa bile, dosyaların tüm sahiplik ve izin bilgileri xattrs içinde güvenle saklanır ve daha sonra geri yüklenebilir. Bu yedekleme işlemleri için harika bir çözümdür.
--sparse, -S Bu seçenek rsync'in dosyalardaki ardışık sıfır (null) bloklarını algılamasını ve bunları hedef tarafta "seyrek" (sparse) dosya blokları olarak yazmasını söyler. Bu sayede disk üzerinde boş yere alan kaplanması engellenir.
--preallocate Bu seçenek, rsync'in hedef dosyayı yazmaya başlamadan önce disk üzerinde dosyanın tamamı için yer ayırmasını (preallocation) sağlar. Bu, özellikle büyük dosyaların yazılması sırasında disk parçalanmasını (fragmentation) azaltmaya yardımcı olur ve disk alanı yetersizliği nedeniyle yazma işleminin yarıda kesilmesini önler.
İşletim sisteminin ve dosya sisteminin bu özelliği desteklemesi gerekir (örneğin Linux üzerinde fallocate() sistemi veya macOS üzerinde F_PREALLOCATE fcntl çağrısı kullanılır).
--dry-run, -n
Bu seçenek, rsync'in herhangi bir dosya üzerinde değişiklik yapmadan (kopyalama, silme, öznitelik güncelleme vb.) komutun ne yapacağını simüle etmesini sağlar. Hangi dosyaların aktarılacağını veya silineceğini güvenli bir şekilde görmek için --verbose (-v) ve/veya --itemize-changes (-i) seçenekleriyle birlikte kullanılması önerilir.
--whole-file, -W Bu seçenek, rsync'in delta transfer algoritmasını (yani yalnızca değişen veri bloklarının gönderilmesini) tamamen devre dışı bırakmasını ve dosyaları bütün olarak (whole file) kopyalamasını sağlar.
Yerel makine üzerindeki kopyalamalarda (KAYNAK ve HEDEF yollarının her ikisi de yerel olduğunda), rsync varsayılan olarak bu modu kullanır çünkü yerel diskler arasındaki veri aktarım hızı genellikle delta algoritmasının gerektirdiği disk G/Ç ve işlemci yükünden çok daha hızlıdır. Ağ üzerinden kopyalamalarda ise varsayılan olarak delta algoritması kullanılır. Bu seçeneği belirtebyrek ağ aktarımlarında da dosyaların her zaman bütün olarak gönderilmesini sağlayabilirsiniz; bu, bant genişliğinin yüksek ancak işlemci gücünün sınırlı olduğu durumlarda yararlı olabilir.
Bunu devre dışı bırakmak ve yerel aktarımlarda da delta transfer algoritmasını zorlamak için --no-whole-file (--no-W) seçeneğini kullanabilirsiniz.
--checksum-choice=STR, --cc=STR Bu seçenek, dosya ve veri bloklarının doğrulanması için kullanılacak sağlama toplamı (checksum) algoritmasını açıkça seçmenizi sağlar. Rsync normalde aktarımın her iki tarafı modern sürümler olduğunda en iyi algoritmayı otomatik olarak müzakere eder.
Kullanabileceğiniz sağlama toplamı algoritmaları şunlar olabilir:
o xxh128 (xxHash 128-bit)
o xxh64 (xxHash 64-bit)
o md5 (MD5 128-bit)
o md4 (MD4 128-bit)
o none (sağlama toplamı kullanılmaz)
Hangi algoritmaların sizin sürümünüzde derlenmiş olduğunu görmek için rsync --version komutunu çalıştırabilirsiniz.
--one-file-system, -x
Bu seçenek, özyinelemeli tarama sırasında rsync'in dosya sistemi sınırlarını geçmesini (diğer dosya sistemlerine veya bağlı bölümlere (mount points) girmesini) engeller. Bu, yedekleme yaparken başka bir diske veya sanal dosya sistemlerine (örneğin /proc, /sys, /dev vb.) bağlı dizinlerin yedeklenmesini önlemek için son derece yararlıdır.
--existing Bu seçenek rsync'e hedef tarafta halihazırda mevcut olmayan (yani yeni oluşturulacak olan) dosyaların kopyalanmasını atlamasını söyler. Yalnızca hedefte zaten var olan dosyalar güncellenir.
Bu seçenek, hedef taraftaki dizinlerin içeriğine yeni dosyalar eklemeden sadece mevcut dosyaları güncellemek istediğinizde yararlıdır.
--ignore-existing Bu seçenek rsync'e hedef tarafta zaten mevcut olan dosyaların güncellenmesini atlamasını söyler. Yalnızca hedef tarafta bulunmayan yeni dosyalar kopyalanır.
Bu seçenek, yarıda kalmış büyük aktarımların kaldığı yerden devam ettirilmesi veya hedefe yeni eklenen dosyaların hızlıca kopyalanması için yararlıdır. Zaman damgası veya boyut farkları dikkate alınmaz.
--remove-source-files Bu seçenek rsync'e başarıyla kopyalanan ve alıcı tarafta doğrulanan kaynak dosyaları (dizin olmayanları) gönderen taraftan silmesini söyler. Bu, kopyalama işleminden sonra kaynak dosyaları temizlemenin ve bir nevi "taşıma" (move) işlemi gerçekleştirmenin kolay bir yoludur. Dizinlerin kendileri ise silinmez.
--del
Bu seçenek --delete-during seçeneği için kısa bir takma addır (alias).
--delete Bu seçenek rsync'e kaynak tarafta bulunmayan ancak hedef tarafta mevcut olan yabancı (redundant) dosyaları ve dizinleri hedef dizinden silmesini söyler. Bu, hedef dizinin kaynak dizinle tam bir ayna (mirror) haline gelmesini sağlar.
Bu seçeneğin çalışması için özyineleme (--recursive) seçeneğinin etkin olması gerekir. Silme işleminin hangi aşamada yapılacağını belirlemek için aşağıdaki --delete-BEFORE/DURING/DELAY/AFTER seçeneklerine bakınız. Eğer bunlardan hiçbiri belirtilmezse, rsync varsayılan olarak --delete-during (aktarım protokolü 30 veya daha yenisi için) veya --delete-before (eski protokoller için) modunu kullanır.
--delete-before Bu seçenekle rsync, kaynak taraftan yeni veya güncellenmiş dosyaları kopyalamaya başlamadan önce, silinmesi gereken tüm yabancı dosyaları hedef taraftan siler.
Bu, hedef taraftaki disk alanının çok kısıtlı olduğu ve yeni dosyalar yazılmadan önce eski dosyaların silinerek yer açılması gerektiği durumlarda yararlıdır. Ancak, silinecek dosyaları bulmak için aktarım öncesinde tam bir dosya listesi taraması yapılması gerektiği için aktarımın başlamasını geciktirebilir.
--delete-during Bu seçenekle rsync, aktarım işlemi devam ederken, her bir dizin tarandıkça o dizindeki yabancı dosyaları tespit eder ve anında siler.
Bu yöntem oldukça hızlıdır ve ek bellek veya işlem gecikmesi gerektirmez, çünkü silme işlemi normal aktarımla paralel olarak yürütülür.
--delete-delay Bu seçenekle rsync, aktarım sırasında silinmesi gereken dosyaları tespit eder ancak bunları hemen silmez; silme işlemini tüm dosya aktarımları başarıyla tamamlandıktan sonraya erteler.
Bu, aktarım sırasında silinen dosyaların geçici olarak da olsa eksik olmasını istemediğiniz durumlarda yararlıdır.
--delete-after
Bu seçenekle rsync, silme işlemini dosya aktarım aşaması tamamen bittikten sonraya erteler. --delete-delay seçeneğinden farkı, silinecek dosyaların taranmasının ve tespit edilmesinin de aktarım tamamlandıktan sonra yapılmasıdır.
--delete-excluded Bu seçenek rsync'e hedef taraftaki yabancı dosyaları silerken, hariç tutma (exclude) filtre kurallarıyla eşleşen dosyaları da silmesini söyler.
Normalde rsync, hariç tutulan dosyaları korur ve hedef taraftan silmez. Bu seçeneği belirterek, hariç tutulan dosyaların da hedef dizinde barındırılmamasını sağlayabilirsiniz.
--ignore-missing-args Bu seçenek rsync'e komut satırında belirtilen kaynak argümanlarından bazıları mevcut değilse bile hata vermeden veya çalışmayı durdurmadan işleme devam etmesini söyler. Eksik kaynak argümanları sessizce göz ardı edilir.
--delete-missing-args
Bu seçenek rsync'e komut satırında belirtilen kaynak argümanlarından biri kaynak tarafta mevcut değilse, hedef taraftaki karşılık gelen dosyayı veya dizini silmesini söyler. Bu seçenek --ignore-missing-args seçeneğini de zımnen etkinleştirir.
--ignore-errors Bu seçenek rsync'e G/Ç (I/O) hataları veya izin sorunları nedeniyle bazı dosyalar kopyalanamamış olsa bile hedef taraftaki silme işlemlerini yapmaya devam etmesini söyler.
Normalde rsync, herhangi bir aktarım hatası meydana geldiğinde hedef taraftaki dosyaların yanlışlıkla silinmesini önlemek için güvenlik amacıyla silme eylemlerini otomatik olarak devre dışı bırakır.
--force-delete Bu seçenek rsync'e yabancı dizinleri silerken, bu dizinler boş olmasalar bile (yani içlerinde rsync tarafından kopyalanmayan başka dosyalar olsa bile) bunları zorla silmesini söyler.
--force-change, --force-uchange, --force-schange Bu seçenekler rsync'e alıcı tarafta üzerine yazılması veya silinmesi gereken ancak işletim sistemi düzeyinde "değiştirilemez" (immutable) olarak işaretlenmiş olan dosyaların veya dizinlerin bu bayraklarını geçici olarak temizlemesini ve işlemi zorla gerçekleştirmesini söyler.
o --force-uchange: Yalnızca kullanıcı düzeyindeki değiştirilemezlik (user-immutable) bayrağını etkiler.
o --force-schange: Yalnızca sistem düzeyindeki değiştirilemezlik (system-immutable) bayrağını etkiler.
o --force-change: Hem kullanıcı ve sistem düzeyindeki değiştirilemezlik bayraklarını etkiler.
İşlem tamamlandıktan sonra, eğer izinler elveriyorsa rsync bu bayrakları hedef dosya üzerinde yeniden etkinleştirebilir.
--max-delete=NUM Bu seçenek rsync'in bir çalışma sırasında silebileceği maksimum dosya ve dizin sayısını NUM ile sınırlar. Eğer silinmesi gereken dosya sayısı bu sınırı aşarsa, rsync silme işlemini durdurur ve bir uyarı mesajı verir. Bu, yanlışlıkla binlerce dosyanın silinmesini önlemek için harika bir güvenlik sınırıdır.
--max-size=SIZE
Bu seçenek rsync'in belirtilen SIZE değerinden daha büyük olan dosyaları aktarmamasını sağlar. SIZE değeri için K (Kilo), M (Mega), G (Giga) gibi son ekler kullanılabilir (örneğin --max-size=10M).
--min-size=SIZE Bu seçenek rsync'in belirtilen SIZE değerinden daha küçük olan dosyaları aktarmamasını sağlar. Küçük geçici dosyaları veya boş dosyaları filtrelemek için yararlıdır.
--max-alloc=SIZE Bu seçenek rsync'in tek seferde ayırabileceği maksimum bellek miktarını sınırlar. Çok büyük dosya listeleriyle çalışırken aşırı bellek tüketimini engellemek amacıyla kullanılabilir.
--temp-dir=DIR, -T Bu seçenek rsync'e aktarım sırasında kullanılan geçici dosyaları (temp-files) hedef dosyanın bulunduğu dizin yerine belirtilen DIR dizininde oluşturmasını söyler. Aktarım tamamlandıktan sonra geçici dosya kendi nihai konumuna taşınır.
Bu, hedef dosya sisteminde yeterli alan olmadığında veya geçici dosyaların başka bir disk bölümünde oluşturulması istendiğinde yararlıdır.
--fuzzy, -y Bu seçenek rsync'e hedef tarafta kopyalanacak dosya mevcut değilse, aktarımı hızlandırmak amacıyla aynı dizinde bulunan benzer bir dosyayı (fuzzy match) temel (basis) dosya olarak kullanmasını söyler.
Rsync, benzer boyutta ve değiştirilme zamanına sahip bir dosya veya çok benzer ada sahip bir dosya arar. Eğer bulursa, delta algoritmasını bu dosyaya karşı çalıştırarak yalnızca farkları aktarır ve hedefe yeni dosyayı yazar. Bu, yeniden adlandırılmış veya sürüm numarası değişmiş dosyaların aktarımında büyük bant genişliği tasarrufu sağlar.
--compare-dest=DIR Bu seçenek rsync'e hedef tarafta dosya mevcut değilse, belirtilen DIR dizinindeki dosyaları da temel (basis) dosya olarak karşılaştırmasını söyler. Eğer DIR dizininde gönderen taraftakitle tamamen aynı boyutta ve değiştirilme zamanına sahip bir dosya bulunursa, dosya kopyalanmaz; bunun yerine hedef dizinde bu dosyaya yönelik bir referans veya kopyalama eylemi değerlendirilir.
DIR dizini göreli bir yol olarak belirtilirse, bu yol hedef dizine göre göreli olarak kabul edilir.
--copy-dest=DIR
Bu seçenek --compare-dest seçeneğine çok benzer; ancak rsync, DIR dizininde eşleşen bir dosya bulursa (ve bu dosya hedef tarafta mevcut değilse), dosyayı ağ üzerinden kopyalamak yerine doğrudan DIR dizininden hedef dizine yerel olarak kopyalar. Bu, ağ bant genişliğinden tasarruf sağlar.
--link-dest=DIR
Bu seçenek de --compare-dest seçeneğine benzer; ancak rsync, DIR dizininde gönderen taraftakiyle tamamen aynı olan bir dosya bulursa, bu dosyayı hedef dizine kopyalamak yerine DIR dizinindeki dosyaya yönelik bir sabit bağlantı (hard link) oluşturur.
Bu özellik, dosya sisteminde neredeyse hiç ek yer kaplamayan artımlı (incremental) yedeklemeler oluşturmak için mükemmel bir yöntemdir. Her bir yedekleme klasörü tam bir yedek gibi görünür ancak değişmeyen dosyalar önceki yedeklerdeki dosyalarla aynı disk bloklarını paylaşır.
--compress, -z Bu seçenekle rsync, hedef makineye gönderilen dosya verilerini sıkıştırarak iletilen veri miktarını azaltır. Bu, özellikle yavaş bağlantılar üzerinden aktarım yaparken son derece yararlıdır.
Rsync birden fazla sıkıştırma yöntemini destekler ve --compress-choice (--zc) seçeneğiyle belirli bir seçimi zorlamadığınız sürece sizin için en uygun olanını otomatik olarak seçer.
Sürümünüzde yerleşik olan varsayılan sıkıştırma algoritmalarının listesini görmek için rsync --version komutunu çalıştırabilirsiniz.
Aktarımın her iki tarafı da en az sürüm 3.2.0 olduğunda rsync, istemcinin listesindeki ilk sıkıştırma algoritmasını sunucunun listesiyle karşılaştırarak ortak olan ilk algoritmayı seçer. Eğer ortak bir sıkıştırma algoritması bulunamazsa rsync bir hata vererek sonlanır. Eğer uzak rsync sürümü müzakereyi destekleyemeyecek kadar eskiyse, varsayılan algoritmanın "zlib" olduğu kabul edilir.
Varsayılan sıkıştırma listesi sırası, RSYNC_COMPRESS_LIST ortam değişkenine aralarında boşluk bırakılmış kabul edilebilir algoritma adları yazılarak özelleştirilebilir. Karakter dizisi bir "&" karakteri içeriyorsa, bu "istemci dizisi & sunucu dizisi" olarak ikiye ayrılır; aksi takdirde aynı liste her iki taraf için de geçerli olur. Bilinmeyen tüm sıkıştırma adları listeden atılır; ancak yalnızca geçersiz adlar içeren bir liste müzakerenin başarısız olmasıyla sonuçlanır.
Sıkıştırma kütüphaneleri varsayılan zlib sıkıştırma yöntemiyle uyumlu olmadığı için bazı eski rsync sürümleri -z seçeneğini reddedebilir ve -zz kullanılmasını isteyebilir. Arka plan programı (daemon) şikayet edip sizden -zz belirtmenizi istemediği sürece bu tuhaflığı genellikle göz ardı edebilirsiniz.
--compress-choice=STR, --zc=STR
Bu seçenek, --compress kullanıldığında gerçekleşen sıkıştırma algoritmasının otomatik olarak müzerere edilmesini geçersiz kılmak için kullanılabilir. "none" seçeneği belirtilmediği sürece bu seçenek otomatik olarak --compress seçeneğini de etkinleştirir ("none" belirtilmesi ise --no-compress anlamına gelir).
Kullanabileceğiniz sıkıştırma algoritmaları şunlardır:
o zstd
o lz4
o zlibx
o zlib
o none
Kendi rsync sürümünüzdeki varsayılan listeyi görmek için rsync --version komutunu çalıştırabilirsiniz.
Eğer --old-compress veya --new-compress adlı bir seçenek hakkında hata alırsanız, bu rsync'in --compress-choice=zlib veya --compress-choice=zlibx seçeneğini daha eski rsync sürümlerinin anlayabileceği geriye dönük uyumlu bir şekilde göndermeye çalıştığını gösterir. Bu hata, sunucudaki eski rsync sürümünün sıkıştırma türünü zorlamanıza izin vermediği anlamına gelir.
"zlibx" sıkıştırma algoritması, eşleşen verilerin sıkıştırma akışından hariç tutulduğu (böylece harici bir zlib uygulamasıyla daha uyumlu hale getirilmeye çalışıldığı) normal "zlib" algoritmasıdır.
--compress-level=NUM, --zl=NUM
Bu seçenek, sıkıştırma algoritmasının sıkıştırma düzeyini (bkz. --compress, -z) otomatik olarak belirlemek yerine açıkça ayarlamanızı sağlar. Seçilen düzey, ilgili algoritmanın "sıkıştırma yapma" düzeyi olmadığı sürece --compress seçeneği de zımnen etkinleştirilir (örneğin zlib sıkıştırmasında 0 düzeyi "sıkıştırmayı kapat" anlamına gelir).
Geçerli düzey değerleri, yürürlükteki sıkıştırma algoritmasına göre değişir. Rsync varsayılan olarak bir sağlama toplamı ve sıkıştırma seçeneğini müzakere edeceği için (uzak taraf yeterince yeniyse), hangi algoritmanın etkin olduğundan emin değilseniz bu seçeneği bir --compress-choice (--zc) seçeneğiyle birleştirmek iyi olabilir. Örneğin:
rsync -aiv --zc=zstd --zl=22 host:src/ dest/
zlib ve zlibx sıkıştırmaları için geçerli değerler 1 ile 9 arasındadır ve varsayılan değer 6'dır. --zl=0 belirtilmesi sıkıştırmayı kapatır, --zl=-1 belirtilmesi ise varsayılan düzey olan 6'yı seçer.
zstd sıkıştırması için geçerli değerler -131072 ile 22 arasındadır ve varsayılan değer 3'tür. 0 belirtilmesi varsayılan olan 3 düzeyini seçer.
lz4 sıkıştırmasında herhangi bir düzey bulunmadığından bu değer her zaman 0'dır.
Çok büyük veya çok küçük bir değer belirtirseniz, sayı otomatik olarak geçerli sınırlar içine çekilir. Bu sayede, hangi algoritmanın seçildiğine bakılmaksızın en yüksek sıkıştırma düzeyini elde etmek için güvenle --zl=999999999 gibi bir şey belirtebilirsiniz.
Yürürlükteki sıkıştırma düzeyini öğrenmek istiyorsanız, "müzakere edilen karakter dizisi" sonuçlarını görmek için --debug=nstr seçeneğini belirtin. Bu seçenek, "Client compress: zstd (level 3)" gibi bir rapor verecektir (etkin olan sağlama toplamı seçimiyle birlikte).
--skip-compress=LIST NOT: Şu anda hiçbir sıkıştırma yöntemi dosya başına sıkıştırma değişikliklerini desteklememektedir, bu nedenle bu seçeneğin şu anda herhangi bir etkisi yoktur.
Sıkıştırılması gerekmeyen dosya uzantılarının (suffixes) listesini geçersiz kılar. Rsync, dosyanın uzantısına göre dosya bazında sıkıştırma düzeyini ayarlar. Eğer sıkıştırma algoritmasının bir "kapalı" (off) düzeyi varsa, bu dosyalar için hiçbir sıkıştırma yapılmaz. Akış düzeyinin dinamik olarak değiştirilmesini destekleyen diğer algoritmalarda ise eşleşen dosya için işlemci kullanımını en aza indirmek üzere düzey minimuma düşürülür.
LIST, aralarında eğik çizgi (/) bulunan bir veya daha fazla dosya uzantısından (nokta olmadan) oluşmalıdır. Hiçbir dosyanın atlanmaması gerektiğini belirtmek için boş bir karakter dizisi belirtebilirsiniz.
Basit karakter sınıfı eşleştirmesi desteklenir: her biri köşeli parantez içindeki harflerden oluşmalıdır (örneğin "[:alpha:]" gibi özel sınıflar desteklenmez ve '-' karakterinin özel bir anlamı yoktur).
Yıldız (*) ve soru işareti (?) karakterlerinin özel bir anlamı yoktur.
Aşağıdaki örnek, atlanacak 6 uzantıyı belirtir (5 kuraldan 1'i 2 uzantıyla eşleştiği için):
--skip-compress=gz/jpg/mp[34]/7z/bz2
Rsync'in bu sürümündeki varsayılan skip-compress listesi şunlardır:
3g2 3gp 7z aac ace apk avi bz2 deb dmg ear f4v flac flv gpg gz iso jar jpeg jpg lrz lz lz4 lzma lzo m1a m1v m2a m2ts m2v m4a m4b m4p m4r m4v mka mkv mov mp1 mp2 mp3 mp4 mpa mpeg mpg mpv mts odb odf odg odi odm odp ods odt oga ogg ogm ogv ogx opus otg oth otp ots ott oxt png qt rar rpm rz rzip spx squashfs sxc sxc sxg sxm sxw sz tbz tbz2 tgz tlz ts txz tzo vob war webm webp xz z zip zst
Bir daemon rsync'ten kopyalama yapılması haricindeki tüm durumlarda bu liste sizin belirteceğiniz --skip-compress listesiyle tamamen değiştirilecektir. Daemon kopyalamasında ise sizin atladığınız uzantılar daemon'ın kendi listesine eklenir.
--numeric-ids Bu seçenekle rsync, kullanıcı ve grup isimlerini kullanıp her iki uçta bunları eşleştirmeye çalışmak yerine, doğrudan sayısal grup ve kullanıcı kimliklerini (UID/GID) aktarır.
Varsayılan olarak rsync, dosyalara hangi sahipliği vereceğini belirlemek için kullanıcı ve grup adlarını kullanır. Özel uid 0 ve özel grup 0, --numeric-ids seçeneği belirtilmemiş olsa bile kullanıcı/grup adları aracılığıyla hiçbir zaman eşleştirilmez.
Kaynak sistemde bir kullanıcı veya grubun adı yoksa ya da hedef sistemde eşleşen bir ad bulunamazsa, kaynak sistemdeki sayısal kimlik aynen kullanılır. chroot ayarının rsync'in kullanıcı ve grup adlarını arama yeteneğini nasıl etkilediği hakkında rsyncd.conf kılavuz sayfasındaki use chroot ayarlarına bakınız.
--usermap=STRING, --groupmap=STRING Bu seçenekler, alıcı tarafta belirli kullanıcı ve grupların diğer değerlerle eşleştirilmesini (map) sağlar. STRING, aralarında virgül bulunan bir veya daha fazla KAYNAK:HEDEF değer çiftinden oluşur. Gönderenden gelen herhangi bir eşleşen KAYNAK değeri, alıcıdaki bir HEDEF değeriyle değiştirilir. KAYNAK ve HEDEF değerleri için kullanıcı adları veya kullanıcı kimlikleri (UID) belirtebilirsiniz. KAYNAK değeri, gönderenin adlarıyla eşleştirilecek bir joker karakter (wildcard) dizisi de olabilir (joker karakterler kimlik numaralarıyla eşleşmez; ancak '*' karakterinin her şeyle neden eşleştiğine dair açıklamaya aşağıda bakınız). Ayrıca, LOW-HIGH şeklinde bir kimlik aralığı da belirtebilirsiniz. Örneğin:
--usermap=0-99:nobody,wayne:admin,*:normal --groupmap=usr:1,1:usr
Listedeki ilk eşleşen kural geçerli olur. Tüm kullanıcı eşlemelerinizi tek bir --usermap seçeneği altında ve/veya tüm grup eşlemelerinizi tek bir --groupmap seçeneği altında belirtmelisiniz.
Gönderen taraftaki 0 kullanıcısı ve grubu alıcıya isim olarak iletilmediği için, bu değerleri eşleştirmek için ya doğrudan 0 kullanmalı ya da alıcı taraftaki geçerli isimleri (genellikle "root") kullanmalısınız. Diğer tüm KAYNAK isimleri gönderen taraftakilerle, tüm HEDEF isimleri ise alıcı taraftakilerle eşleşir.
Gönderen tarafta adı bulunmayan tüm kimlikler, eşleştirme amacıyla boş bir ada sahipmiş gibi işlem görür. Bu sayede bunlarla "*" karakteri kullanarak veya doğrudan boş bir adla eşleşme sağlanabilir. Örneğin:
--usermap=:nobody --groupmap=*:nobody
--numeric-ids seçeneği kullanıldığında gönderen taraf hiçbir isim göndermez; bu nedenle tüm kimlikler boş bir ada sahipmiş gibi işlem görür. Bu nameless kimlikleri farklı değerlerle eşleştirmek istiyorsanız sayısal KAYNAK değerleri belirtmeniz gerekecektir.
--usermap seçeneğinin çalışabilmesi için alıcının süper kullanıcı olarak çalışıyor olması gerekir (ayrıca --super ve --fake-super seçeneklerine bakınız). --groupmap seçeneğinin çalışabilmesi için ise alıcının o grubu atama yetkisine sahip olması gerekir.
rsync 3.2.4 sürümünden itibaren, --usermap seçeneği --owner (-o) seçeneğini, --groupmap seçeneği ise --group (-g) seçeneğini zımnen etkinleştirir (çünkü rsync'in bu eşlemeleri yapabilmesi için öncelikle bu özellikleri etkinleştirmiş olması gerekir).
--chown=USER:GROUP
Bu seçenek, tüm dosyaların sahibini USER, grubunu ise GROUP olarak zorlar. Bu, doğrudan --usermap ve --groupmap seçeneklerini kullanmaktan daha basit bir arayüzdür; ancak dahili olarak bu seçenekler kullanılarak uygulandığı için onlarla karıştırılamaz. USER veya GROUP kısımlarından biri boş bırakılırsa, o kısım için herhangi bir eşleme yapılmaz. GROUP boş bırakılırsa sondaki iki nokta üst üste atlanabilir; ancak USER boş bırakılırsa baştaki iki nokta üst üste mutlaka konulmalıdır.
"--chown=foo:bar" belirtilmesi, tamamen "--usermap=:foo --groupmap=:bar" belirtilmesine eşdeğerdir ve çok daha kolaydır (aynı zımni --owner ve/veya --group seçenekleriyle birlikte).
--timeout=SECONDS Bu seçenek, saniye cinsinden maksimum G/Ç zaman aşımı (I/O timeout) süresini belirlemenizi sağlar. Belirtilen süre boyunca hiçbir veri aktarımı gerçekleşmezse rsync çalışmayı durdurur. Varsayılan değer 0'dır, bu da zaman aşımı olmadığı anlamına gelir.
--contimeout=SECONDS Bu seçenek, rsync'in bir rsync daemon'ına bağlanmaya çalışırken ne kadar süreyle bekleyeceğini saniye cinsinden belirlemenizi sağlar. Zaman aşımına ulaşılırsa rsync bir hata vererek sonlanır.
--address=ADDRESS
Varsayılan olarak rsync, bir rsync daemon'ına bağlanırken genel adres şablonuna (wildcard address) bağlanır. --address seçeneği, bağlanılacak belirli bir IP adresini (veya makine adını) belirtmenizi sağlar.
Ayrıca bu seçeneğin daemon sürümüne de bakınız.
--port=PORT Bu seçenek, varsayılan TCP portu olan 873 yerine kullanılacak alternatif bir port numarası belirtir. Bu seçenek yalnızca bir rsync daemon'ına bağlanmak için çift iki nokta üst üste (::) sözdizimini kullanıyorsanız gereklidir (çünkü URL sözdiziminde port numarası zaten URL'nin bir parçası olarak belirtilebilir).
Ayrıca bu seçeneğin daemon sürümüne de bakınız.
--sockopts=OPTIONS
Bu seçenek, sistemlerini en üst düzeyde optimize etmek isteyen kişiler için sonsuz bir eğlence kaynağı sunabilir. Aktarımları hızlandırabilecek (veya yavaşlatabilecek!) her türlü soket seçeneğini belirleyebilirsiniz. Ayarlayabileceğiniz seçeneklerin ayrıntıları için setsockopt() sistem çağrısının kılavuz sayfasına bakınız. Varsayılan olarak hiçbir özel soket seçeneği ayarlanmaz. Bu durum yalnızca uzak bir rsync daemon'ına yapılan doğrudan soket bağlantılarını etkiler.
Ayrıca bu seçeneğin daemon sürümüne de bakınız.
--blocking-io Bu seçenek rsync'e uzak bir kabuk aktarımı başlatırken engelleyici (blocking) G/Ç kullanmasını söyler. Eğer uzak kabuk rsh veya remsh ise, rsync varsayılan olarak engelleyici G/Ç kullanır; aksi takdirde engelleyici olmayan (non-blocking) G/Ç kullanır (ssh'ın engelleyici olmayan G/Ç'yi tercih ettiğini unutmayınız).
--outbuf=MODE Bu seçenek, çıktı arabelleğe alma (output buffering) modunu ayarlar. MOD değeri None (yani Arabelleksiz - Unbuffered), Line (Satır arabellekli) veya Block (yani Tam arabellekli - Full) olabilir. Mod için tek bir harf (büyük veya küçük harf fark etmeksizin) belirtmeniz yeterlidir.
Bu seçeneğin temel kullanım amacı, rsync çıktısı bir dosyaya veya boru hattına (pipe) yönlendirildiğinde Tam arabelleğe almayı Satır arabelleğe almaya dönüştürmektir.
--itemize-changes, -i
Her dosyaya yapılan değişikliklerin (öznitelik değişiklikleri dahil) basit ve maddelendirilmiş bir listesini talep eder. Bu, tamamen --out-format='%i %n%L' seçeneğinin belirtilmesine eşdeğerdir. Seçeneği tekrarlarsanız, değişmemiş dosyalar da listelenir; ancak bunun için alıcı rsync'in en az 2.6.7 sürümünde olması gerekir (daha eski sürümlerde -vv kullanabilirsiniz, ancak bu diğer ayrıntılı mesajları da etkinleştirir).
"%i" kaçış karakteri, 11 karakter uzunluğunda kriptik bir çıktı üretir. Genel biçim YXcstpoguaxf karakter dizisi gibidir; burada Y güncellenme türünü, X dosya türünü temsil eder ve diğer harfler değiştirilen öznitelikleri gösterir.
Y karakterinin yerini alan güncelleme türleri şunlardır:
o A < işareti, dosyanın uzak sunucuya aktarıldığını (gönderildiğini) gösterir.
o A > işareti, dosyanın yerel sunucuya aktarıldığını (alındığını) gösterir.
o A c işareti, öğe için yerel bir değişiklik veya oluşturma işlemi yapıldığını gösterir (bir dizinin oluşturulması veya sembolik bağlantının değiştirilmesi gibi).
o A h işareti, öğenin başka bir öğeye sabit bağlantı (hard link) olduğunu gösterir (--hard-links gerektirir).
o A . işareti, öğenin güncellenmediğini gösterir (ancak bazı öznitelikleri değiştirilmiş olabilir).
o A * işareti, maddelenmiş çıktının kalan kısmının bir mesaj içerdiğini gösterir (örneğin "deleting").
X karakterinin yerini alan dosya türleri şunlardır: dosya için f, dizin için d, sembolik bağlantı için L, aygıt dosyası için D ve özel bir dosya (adlandırılmış soket veya FIFO gibi) için S.
Karakter dizisindeki diğer harfler, dosyanın bazı özniteliklerinin değişip değişmediğini şu şekilde gösterir:
o "." - öznitelik değişmemiştir.
o "+" - dosya yeni oluşturulmuştur.
o " " - tüm öznitelikler değişmeden kalmıştır (tüm noktalar boşluğa dönüşür).
o "?" - değişikliğin ne olduğu bilinmemektedir (uzak rsync eski olduğunda).
o Bir harf, özniteliğin güncellendiğini gösterir.
Her bir harfle ilişkili olan öznitelik şöyledir:
o A c işareti, normal bir dosyanın farklı bir sağlama toplamına sahip olduğunu (--checksum gerektirir) veya bir sembolik bağlantının, aygıtın ya da özel dosyanın değerinin değiştiğini gösterir. rsync 3.0.1 öncesi bir sürüme dosya gönderiyorsanız, bu değişiklik bayrağının yalnızca sağlama toplamı farklı olan normal dosyalar için mevcut olacağını unutmayınız.
o A s işareti, normal bir dosyanın boyutunun farklı olduğunu ve dosya aktarımıyla güncelleneceğini gösterir.
o A t işareti, son değiştirilme zamanının farklı olduğunu ve gönderenin değerine güncelleneceğini gösterir (--times gerektirir). Alternatif olarak T değeri, son değiştirilme zamanının aktarım zamanına ayarlanacağını gösterir; bu durum bir dosya/sembolik bağlantı/aygıt --times seçeneği olmadan güncellendiğinde veya bir sembolik bağlantı değiştiğinde ve alıcı bunun zamanını ayarlayamadığında gerçekleşir (rsync 3.0.0 istemcisi kullanırken, bu zaman ayarlama hatası için düzgün T bayrağı yerine t bayrağıyla birleştirilmiş s görebilirsiniz).
o A p işareti, izinlerin farklı olduğunu ve gönderenin değerine güncelleneceğini gösterir (--perms gerektirir).
o An o işareti, sahibinin farklı olduğunu ve gönderenin değerine güncelleneceğini gösterir (--owner ve süper kullanıcı ayrıcalıkları gerektirir).
o A g işareti, grubun farklı olduğunu ve gönderenin değerine güncelleneceğini gösterir (--group ve grubu ayarlama yetkisi gerektirir).
o Bir u|n|b işareti şu bilgileri gösterir:
u: erişim (kullanım) zamanının farklı olduğunu ve gönderenin değerine güncelleneceğini gösterir (--atimes gerektirir)
n: oluşturulma zamanının (yeniliğin) farklı olduğunu ve gönderenin değerine güncelleneceğini gösterir (--crtimes gerektirir)
b: hem erişim ve oluşturulma zamanlarının güncellendiğini gösterir
o A a işareti, ACL bilgisinin değiştirildiğini gösterir.
o A x işareti, genişletilmiş öznitelik (xattr) bilgisinin değiştirildiğini gösterir.
Diğer olası bir çıktı da şudur: dosyalar silinirken "%i" her kaldırılan öğe için "*deleting" çıktısı verecektir (silme işlemlerini ayrıntılı bir mesaj olarak çıktı vermek yerine günlüğe kaydedecek kadar yeni bir rsync ile konuştuğunuzu varsayarsak).
--out-format=FORMAT
Bu seçenek, rsync istemcisinin her güncelleme bazında kullanıcıya tam olarak ne çıktı vereceğini belirlemenizi sağlar. Biçim, önüne yüzde (%) karakteri getirilmiş tek karakterlik kaçış dizilerini içeren bir metin dizisidir. --info=name veya -v seçeneklerinden biri belirtilmişse varsayılan biçim "%n%L" olarak kabul edilir (bu size yalnızca dosyanın adını ve öğe bir bağlantıysa nereye işaret ettiğini söyler). Olası tüm kaçış karakterlerinin tam listesi için rsyncd.conf kılavuz sayfasındaki log format ayarlarına bakınız.
--out-format seçeneğinin belirtilmesi, önemli ölçüde güncellenen (aktarılan bir dosya, yeniden oluşturulan bir sembolik bağlantı/aygıt veya dokunulan bir dizin) her dosyayı, dizini vb. belirtecek olan --info=name seçeneğini de zımnen etkinleştirir. Ek olarak, karakter dizisinde maddelendirilmiş değişiklik kaçış karakteri (%i) yer alıyorsa (örneğin --itemize-changes seçeneği kullanılmışsa), adların günlüklenmesi herhangi bir şekilde değişen herhangi bir öğeyi belirtecek şekilde genişler (alıcı tarafın en az 2.6.4 sürümünde olması koşuluyla). "%i" çıktısının açıklaması için --itemize-changes seçeneğine bakınız.
Rsync, aktarım istatistikleri kaçış karakterlerinden biri istenmediği sürece out-format karakter dizisini dosyanın aktarımından önce yazdırır; bu durumda günlükleme dosya aktarımının sonunda yapılır. Bu geç günlükleme etkinken ve --progress seçeneği de belirtilmişse rsync, aktarılan dosyanın adını ilerleme bilgisinden önce de yazdıracaktır (ardından elbette out-format çıktısı gelecektir).
--log-file=FILE
Bu seçenek rsync'in ne yaptığını belirtilen bir dosyaya kaydetmesini (log) sağlar. Bu, bir daemon'ın yaptığı günlüklemeye benzer, ancak daemon olmayan bir aktarımın istemci ve/veya sunucu tarafı için talep edilebilir. Bir istemci seçeneği olarak belirtilirse, aktarım günlüklemesi varsayılan "%i %n%L" biçimiyle etkinleştirilir. Bunu geçersiz kılmak isterseniz --log-file-format seçeneğine bakınız.
Uzak tarafın ne yaptığını kaydetmesini talep eden bir örnek komut:
rsync -av --remote-option=--log-file=/tmp/rlog src/ dest/
Bu seçenek, bir bağlantının neden beklenmedik şekilde kapandığını hata ayıklamak istiyorsanız son derece yararlıdır.
Ayrıca bu seçeneğin daemon sürümüne de bakınız.
--log-file-format=FORMAT
Bu seçenek, --log-file seçeneğiyle belirtilen dosyaya yazılacak güncelleme bazlı günlük çıktısının biçimini belirlemenizi sağlar (bu seçeneğin etkili olabilmesi için --log-file seçeneğinin de belirtilmesi gerekir). Boş bir karakter dizisi belirtirseniz, güncellenen dosyalar günlük dosyasında belirtilmeyecektir. Olası kaçış karakterlerinin listesi için rsyncd.conf kılavuz sayfasındaki log format ayarlarına bakınız.
--log-file belirtildiğinde ve bu seçenek belirtilmediğinde kullanılan varsayılan BİÇİM '%i %n%L' şeklindedir.
Ayrıca bu seçeneğin daemon sürümüne de bakınız.
--stats
Bu seçenek rsync'e dosya aktarımı hakkında ayrıntılı bir istatistik kümesi yazdırmasını söyler; bu sayede rsync'in delta transfer algoritmasının verileriniz için ne kadar etkili olduğunu görebilirsiniz. Bu seçenek, 0 veya 1 adet -v seçeneğiyle birleştirildiğinde --info=stats2 seçeneğine, 2 veya daha fazla -v seçeneğiyle birleştirildiğinde ise --info=stats3 seçeneğine eşdeğerdir.
Mevcut istatistikler şunlardır:
o Number of files: Dizinler, sembolik bağlantılar vb. dahil olmak üzere genel anlamdaki tüm "dosyaların" sayısıdır. Toplam sayının ardından dosya türüne göre sayıların bir listesi gelir (toplam sıfır değilse). Örneğin: "(reg: 5, dir: 3, link: 2, dev: 1, special: 1)" normal dosyalar, dizinler, sembolik bağlantılar, aygıtlar ve özel dosyalar için toplamları listeler. Herhangi bir değer 0 ise listeden tamamen atlanır.
o Number of created files: Güncellenmek yerine yeni oluşturulan "dosyaların" (genel anlamda) sayısıdır. Toplam sayının ardından dosya türüne göre sayıların bir listesi gelir (toplam sıfır değilse).
o Number of deleted files: Silinen "dosyaların" (genel anlamda) sayısıdır. Toplam sayının ardından dosya türüne göre sayıların bir listesi gelir (toplam sıfır değilse). Bu satırın yalnızca silme eylemleri etkinken ve yalnızca protokol 31 kullanılıyorsa (rsync 3.1.x için varsayılan) çıktı olarak verileceğini unutmayınız.
o Number of regular files transferred: Dizinleri, sembolik bağlantıları vb. içermeyen, rsync'in delta transfer algoritmasıyla güncellenen normal dosyaların sayısıdır. rsync 3.1.0 sürümünün bu başlığa "regular" kelimesini eklediğini unutmayınız.
o Total file size: Aktarımdaki tüm dosya boyutlarının toplamıdır. Bu, dizinlerin veya özel dosyaların boyutlarını saymaz ancak sembolik bağlantıların boyutlarını içerir.
o Total transferred file size: Yalnızca aktarılan dosyaların boyutlarının toplamıdır.
o Literal data: Güncellenen dosyaları yeniden oluşturabilmesi için alıcıya göndermek zorunda kaldığımız eşleşmeyen dosya güncelleme verilerinin miktarıdır.
o Matched data: Alıcının güncellenen dosyaları yeniden oluştururken yerel olarak elde ettiği veri miktarıdır.
o File list size: Gönderenin dosya listesini alıcıya gönderdiği andaki dosya listesi verisinin boyutudur. Rsync listeyi gönderirken bazı yinelenen verileri sıkıştırdığı için bu değer bellek içi boyuttan daha küçükür.
o File list generation time: Gönderenin dosya listesini oluşturmak için harcadığı saniye cinsinden süredir. Bunun mevcut olabilmesi için gönderen tarafta modern bir rsync bulunması gerekir.
o File list transfer time: Gönderenin dosya listesini alıcıya iletmek için harcadığı saniye cinsinden süredir.
o Total bytes sent: Rsync'in istemci tarafından sunucu tarafına gönderdiği tüm baytların toplamıdır.
o Total bytes received: Rsync'in istemci tarafında sunucu tarafından aldığı tüm mesaj dışı baytların toplamıdır. "Mesaj dışı" baytlar, sunucunun bize gönderdiği ayrıntılı mesajların baytlarını saymadığımız anlamına gelir; bu da istatistiklerin daha tutarlı olmasını sağlar.
--8-bit-output, -8 Bu seçenek rsync'e, çıktıdaki tüm yüksek bitli karakterleri geçerli yerel ayarda (locale) geçerli olup olmadıklarını test etmeye çalışmak ve geçersiz olanları kaçış karakterleriyle maskelemek yerine, çıktı olduğu gibi kaçışsız bırakmasını söyler. Bu seçeneğin ayarından bağımsız olarak, tüm kontrol karakterleri (ancak sekmeler asla değil) her zaman kaçış karakterleriyle maskelenir.
2.6.7 sürümünde başlayan kaçış yöntemi, tam olarak bir ters eğik çizgi () ve bir diyez (#) karakterinin ardından tam olarak 3 sekizlik (oktal) basamak yazdırmaktır. Örneğin, bir yeni satır karakteri "#012" olarak çıktı verilir. Dosya adındaki bir ters eğik çizgi, ardından bir diyez ve 3 basamak (0-9) gelmediği sürece kaçış karakteriyle maskelenmez.
--human-readable, -h Sayıları insan tarafından daha kolay okunabilir bir biçimde çıktı olarak verir. 3 olası seviye vardır:
sayıları her 3 basamakta bir ayırıcıyla çıktı olarak verir (ondalık noktanın nokta veya virgülle temsil edilmesine bağlı olarak virgül veya nokta kullanılır).sayıları 1000'lik birimler halinde çıktı olarak verir (büyük birimler için bir karakter son ekiyle birlikte - aşağıya bakınız).sayıları 1024'lük birimler halinde çıktı olarak verir.
Varsayılan, insan tarafından okunabilirlik seviyesi 1'dir. Her -h seçeneği seviyeyi bir artırır. --no-human-readable (--no-h) seçeneğini belirterek seviyeyi 0'a indirebilirsiniz (sayıları saf basamaklar olarak çıktı vermek için).
Seviye 2 ve 3'te eklenen birim harfleri şunlardır: K (kilo), M (mega), G (giga), T (tera) veya P (peta). Örneğin, 1234567 baytlık bir dosya, seviye 2'de 1.23M olarak çıktı verilecektir (yerel ondalık noktanızın nokta olduğu varsayımıyla).
Geriye dönük uyumluluk notu: rsync'in 3.1.0 öncesi sürümleri insan tarafından okunabilirlik seviyesi 1'i desteklemez ve varsayılan olarak seviye 0'ı kullanır. Bu nedenle, bir veya daha fazla -h seçeneği belirtilmesi, bir veya daha fazla -h seçeneğinden önce bir --no-h seçeneği belirtmediğiniz sürece eski ve yeni sürümlerde benzer şekilde davranacaktır. Bir fark için --list-only seçeneğine bakınız.
--partial
Varsayılan olarak rsync, aktarım kesintiye uğrarsa kısmen aktarılmış herhangi bir dosyayı siler. Bazı durumlarda, kısmen aktarılmış dosyaları saklamak daha çok tercih edilir. --partial seçeneğinin kullanılması rsync'e kısmi dosyayı tutmasını söyler; bu da dosyanın kalan kısmının bir sonraki aktarımında işlemi çok daha hızlı hale getirir.
--partial-dir=DIR
Bu seçenek, --partial seçeneğinin davranışını değiştirirken aynı zamanda onun etkin olmasını da zımnen sağlar. Bu gelişmiş kısmi dosya yöntemi, kısmen aktarılan dosyaları doğrudan hedef dosyaya yazmak yerine belirtilen DIR dizinine yerleştirir. Bir sonraki aktarımda rsync, aktarımın devam ettirilmesini hızlandırmak için bu dizinde bulunan dosyayı veri olarak kullanır ve amacına ulaştıktan sonra bu dosyayı siler.
Eğer --whole-file belirtilmişse (veya zımnen etkinse), güncellenen bir dosya için bulunan tüm partial-dir dosyaları doğrudan kaldırılacaktır (çünkü rsync dosyaları delta transfer algoritmasını kullanmadan göndermektedir).
Rsync, eksikse DIR dizinini oluşturacaktır; ancak sadece son dizini oluşturur, tüm yolu değil. Bu, ihtiyaç duyulduğunda hedef dosyanın dizininde kısmi dizini oluşturması ve ardından kısmi dosya silindiğinde bunu tekrar kaldırması için göreli bir yol (örneğin --partial-dir=.rsync-partial) kullanmayı kolaylaştırır. Bu dizin kaldırma işleminin yalnızca göreli bir yol adı için yapıldığını unutmayınız; çünkü mutlak bir yolun kısmi dosya çalışmalarına ayrılmış bir dizine işaret ettiği kabul edilir.
Eğer partial-dir değeri mutlak bir yol değilse rsync, mevcut tüm hariç tutma kurallarınızın en sonuna bir hariç tutma kuralı ekleyecektir. Bu, gönderen tarafta mevcut olabilecek herhangi bir partial-dir dosyasının gönderilmesini engelleyecek ve alıcı taraftaki partial-dir öğelerinin zamanından önce silinmesini de önleyecektir. Bir örnek: yukarıdaki --partial-dir seçeneği, diğer tüm filtre kurallarının sonuna şu "perishable" hariç tutma kuralına eşdeğer bir kural ekleyecektir: -f '-p .rsync-partial/'
Kendi hariç tutma kurallarınızı sağlıyorsanız, partial-dir için kendi hariç tutma/gizleme/koruma kuralınızı eklemeniz gerekebilir çünkü:
otomatik olarak eklenen kural diğer kurallarınızın sonunda etkisiz kalabilir, veyarsync'in hariç tutma seçimini geçersiz kılmak isteyebilirsiniz.
Örneğin, rsync'in etrafta kalmış olabilecek eski partial-dir dizinlerini temizlemesini istiyorsanız, --delete-after seçeneğini belirtmeli ve bir "risk" filtre kuralı eklemelisiniz, örneğin -f 'R .rsync-partial/'. --delete-before veya --delete-during seçeneklerini kullanmaktan kaçının; aksi takdirde rsync'in geçerli çalışma sırasında etrafta kalmış partial-dir verilerini kullanmasına engel olursunuz.
ÖNEMLİ: --partial-dir diğer kullanıcılar tarafından yazılabilir olmamalıdır, aksi takdirde bir güvenlik riski oluşturur! Örneğin "/tmp" dizininden KAÇININ!
Kısmi dizin değerini RSYNC_PARTIAL_DIR ortam değişkeniyle de ayarlayabilirsiniz. Bunun ortamda ayarlanması --partial seçeneğinin etkin olmasını zorunlu kılmaz, aksine --partial belirtildiğinde kısmi dosyaların nereye gideceğini etkiler. Örneğin, --progress ile birlikte --partial-dir=.rsync-tmp kullanmak yerine, ortamınızda RSYNC_PARTIAL_DIR=.rsync-tmp değerini ayarlayabilir ve ardından kısmi aktarımlar için .rsync-tmp dizininin kullanılmasını etkinleştirmek üzere -P seçeneğini kullanabilirsiniz. --partial seçeneğinin bu ortam değerine bakmadığı tek durumlar şunlardır:
`--inplace` belirtildiğinde (çünkü `--inplace` seçeneği `--partial-dir` ile çakışır), ve`--delay-updates` belirtildiğinde (aşağıya bakınız).
Modern bir rsync, kısmi dizindeki bir dosyanın aktarımını devam ettirirken, artık başka bir geçici dosya kopyası oluşturmak yerine bu kısmi dosyayı yerinde günceller (böylece hedef + geçici yerine maksimum hedef + geçici boyutuna ulaşır). Bu, aktarımın her iki ucunun da en az sürüm 3.2.0 olmasını gerektirir.
Daemon yapılandırmasının "refuse options" (reddedilen seçenekler) ayarı açısından, --partial-dir seçeneği --partial seçeneğini zımnen etkinleştirmez. Bu sayede, kısmi bir aktarımla hedef dosyaların üzerine yazılmasını engellemek için --partial seçeneğinin reddedilmesi kullanılabilirken, --partial-dir tarafından sunulan daha güvenli yöntem hala kullanılabilir durumda bırakılabilir.
--delay-updates
Bu seçenek, güncellenen her dosyadan elde edilen geçici dosyayı aktarımın sonuna kadar geçici bir tutma dizininde bekletir; aktarım bittiğinde tüm dosyalar hızlı bir şekilde asıl yerlerine taşınır. Bu, dosyaların güncellenmesini biraz daha atomik hale getirmeye çalışır. Varsayılan olarak dosyalar, her dosyanın hedef dizinindeki .~tmp~ adlı bir dizine yerleştirilir; ancak --partial-dir seçeneğini belirttiyseniz, bunun yerine o dizin kullanılacaktır. Bu .~tmp~ dizininin aktarımdan nasıl hariç tutulacağına ve etrafta kalmış eski .~tmp~ dizinlerini temizlemek istiyorsanız ne yapabileceğinize dair açıklamalar için --partial-dir bölümündeki yorumlara bakınız. --inplace ve --append seçenekleriyle çakışır.
Bu seçenek, en sonda üzerinde döngü kurabilmek için tüm dosya listesinin bellekte olmasına ihtiyaç duyduğundan --no-inc-recursive seçeneğini zımnen etkinleştirir.
Bu seçenek alıcı tarafta daha fazla bellek kullanır (aktarılan dosya başına bir bit) ve ayrıca güncellenen tüm dosyaların ek bir kopyasını barındırabilmek için alıcı tarafta yeterli boş disk alanı gerektirir. Ayrıca, şu durumlar haricinde --partial-dir için mutlak bir yol kullanmamanız gerektiğini unutmayınız:
aktarımdaki dosyaların hiçbirinin aynı ada sahip olma olasılığı yoksa (çünkü yol mutlaksa güncellenen tüm dosyalar tek bir dizine konulacaktır), vehiçbir bağlama noktası (mount point) hiyerarşide yer almıyorsa (çünkü geciktirilmiş güncellemeler asıl yerlerine taşınamazsa başarısız olacaktır).
Daha da atomik olan bir güncelleme algoritması için (sabit bağlantılar --link-dest ve paralel bir dosya hiyerarşisi kullanan) "support" alt dizinindeki "atomic-rsync" python betiğine de bakınız.
--prune-empty-dirs, -m Bu seçenek alıcı rsync'e, dosya listesinden boş dizinleri (hiçbir dizin dışı alt öğesi olmayan yuvalanmış dizinler dahil) temizlemesini söyler. Bu, gönderen rsync dahil etme/hariç tutma/filtre kurallarını kullanarak bir dosya hiyerarşisini özyinelemeli olarak tararken bir yığın gereksiz dizinin hedefte oluşturulmasını önlemek için yararlıdır.
Bu seçenek, TRANSFER_RULES kullanıyorsanız alıcı tarafta hala boş dizinler bırakabilir.
Dosya listesi fiilen budandığı için, bu seçenek bir silme işlemi etkinken hangi dizinlerin silineceğini de etkiler. Ancak, hariç tutulan dosya ve dizinlerin, kaynak dosyaları gizleyerek ve hedef dosyaları koruyarak mevcut öğelerin silinmesini engelleyebileceğini unutmayınız. Bundan kaçınmak için perishable filtre kuralı seçeneğine bakınız.
Global bir "protect" (koruma) filtresi kullanarak belirli boş dizinlerin dosya listesinden budanmasını önleyebilirsiniz. Örneğin, bu seçenek "emptydir" dizininin dosya listesinde tutulmasını sağlayacaktır:
--filter 'protect emptydir/'
Aşağıdaki örnek, bir hiyerarşideki tüm .pdf dosyalarını kopyalar, yalnızca .pdf dosyalarını tutmak için gerekli hedef dizinlerini oluşturur ve hedefteki gereksiz tüm dosya ve dizinlerin kaldırılmasını sağlar (hariç tutma yerine dizin dışı öğelerin gizleme filtresinin kullanıldığına dikkat ediniz):
rsync -avm --del --include='*.pdf' -f 'hide,! */' src/ dest
Gereksiz hedef dosyalarını kaldırmak istemiyorsanız, bunun yerine daha geleneksel olan --include='*/' --exclude='*' seçenekleri de gizleme filtresinin yerine gayet iyi çalışacaktır (eğer bu size daha doğal geliyorsa).
--progress
Bu seçenek rsync'e aktarımın ilerleyişini gösteren bilgileri yazdırmasını söyler. Bu, sıkılan bir kullanıcıya izleyecek bir şeyler verir. Modern bir rsync'te bu, --info=flist2,name,progress seçeneğinin belirtilmesiyle aynıdır; ancak bu bilgi bayrakları için kullanıcı tarafından sağlanan tüm ayarlar önceliklidir (örneğin --info=flist0 --progress).
Rsync normal bir dosyayı aktarırken, şuna benzer bir ilerleme satırını günceller:
782448 63% 110.64kB/s 0:00:04
Bu örnekte, alıcı gönderenin dosyasının 782448 baytını veya %63'ünü yeniden oluşturmuştur; dosya saniyede 110.64 kilobayt hızla yeniden oluşturulmaktadır ve mevcut hız sonuna kadar korunursa aktarım 4 saniye içinde tamamlanacaktır.
Rsync'in delta transfer algoritması kullanılıyorsa bu istatistikler yanıltıcı olabilir. Örneğin, gönderenin dosyası temel dosyadan ve ardından gelen ek verilerden oluşuyorsa, alıcı dosyanın eşleşen kısmını bitirip ham verilere ulaştığında bildirilen hız muhtemelen büyük ölçüde düşecek ve aktarımın tamamlanması alıcının tahmin ettiğinden çok daha uzun sürecektir.
Dosya aktarımı tamamlandığında rsync ilerleme satırını şuna benzer bir özet satırıyla değiştirir:
1,238,099 100% 146.38kB/s 0:00:08 (xfr#5, to-chk=169/396)
Bu örnekte, dosya toplamda 1,238,099 bayt uzunluğundadır; tüm dosya için ortalama aktarım hızı tamamlanması için geçen 8 saniye boyunca saniyede 146.38 kilobayt olmuştur; bu, mevcut rsync oturumu sırasında normal bir dosyanın 5. aktarımıdır ve alıcının kontrol etmesi gereken (güncel olup olmadıklarını görmek için) dosya listesindeki toplam 396 dosyadan geriye 169 dosya kalmıştır.
Artımlı özyineleme taramasında rsync, taramanın sonuna ulaşana kadar dosya listesindeki toplam dosya sayısını bilemez; ancak tarama sırasında dosyaları aktarmaya başladığı için, listenin tam boyutunu öğrenene kadar "to-chk" yerine "ir-chk" (artımlı özyineleme kontrolü - incremental recursion check) metnini içeren bir satır görüntüler; bu noktadan sonra "to-chk" kullanmaya geçer. Bu nedenle, "ir-chk" görmek size dosya listesindeki toplam dosya sayısının hala artacağını bildirir (ve her arttığında, kontrol edilmesi kalan dosya sayısı listeye eklenen dosya sayısı kadar artacaktır).
-P
-P seçeneği --partial --progress seçeneklerine eşdeğerdir. Amacı, yarıda kesilebilecek uzun bir aktarım için bu iki seçeneğin belirtilmesini çok daha kolay hale getirmektir.
Ayrıca, tek tek dosyalar yerine tüm aktarımı temel alan istatistikleri çıktı olarak veren bir --info=progress2 seçeneği de vardır. Ekranı bir sürü isimle kaydırmadan aktarımın nasıl gittiğini görmek istiyorsanız, bir dosya adı çıktı vermeden bu bayrağı kullanın (örneğin -v seçeneğinden kaçının veya --info=name0 belirtin). (--info=progress2 seçeneğini kullanabilmek için --progress seçeneğini belirtmeniz gerekmez.)
Son olarak, rsync'e SIGINFO veya SIGVTALRM sinyallerinden birini göndererek anlık bir ilerleme raporu alabilirsiniz. BSD sistemlerinde, Ctrl+T tuşlarına basılarak bir SIGINFO üretilir (Linux şu anda SIGINFO sinyalini desteklememektedir). İstemci tarafındaki işlem bu sinyallerden birini aldığında, geçerli dosya aktarımı tamamlandığında çıktı verilecek tek bir ilerleme raporu yazdırmak üzere bir bayrak ayarlar (bu nedenle sinyal geldiğinde büyük bir dosya işleniyorsa biraz zaman alabilir). Bir dosya adı çıktı verilir (gerekirse) ve ardından --info=progress2 biçiminde ilerleme bilgisi gelir. 3 rsync işleminden hangisinin istemci işlemi olduğunu bilmiyorsanız, hepsine sinyal göndermeniz sorun teşkil etmez (çünkü istemci dışındaki işlemler sinyali göz ardı eder).
DİKKAT: Eski bir rsync'e (3.2.0 öncesi) SIGVTALRM göndermek onu sonlandıracaktır.
--password-file=FILE
Bu seçenek, bir rsync daemon'ına erişmek için bir dosyadan veya FILE - ise standart girdiden bir şifre sağlamanıza olanak tanır. Dosya, ilk satırda yalnızca şifreyi içermelidir (diğer tüm satırlar göz ardı edilir). FILE herkes tarafından okunabilir durumdaysa veya root tarafından çalıştırılan bir rsync komutu root'a ait olmayan bir dosya bulursa, rsync bir hata vererek sonlanır.
Bu seçenek ssh gibi uzak bir kabuk aktarımına şifre sağlamaz; bunu nasıl yapacağınızı öğrenmek için uzak kabuğun belgelerine başvurun. Bir uzak kabuğu aktarım olarak kullanarak bir rsync daemon'ına erişirken, bu seçenek yalnızca uzak kabuk kimlik doğrulamasını tamamladıktan sonra (yani daemon'ın yapılandırma dosyasında da bir şifre belirttiyseniz) devreye girer.
--early-input=FILE Bu seçenek, rsync'in standart girdisinde "erken yürütme" (early exec) betiğine 5K'ya kadar veri göndermesini sağlar. Bu verilerin olası bir kullanım amacı, betiğe şifrelenmiş bir dosya sistemini bağlamak (mount) için kullanılabilecek bir sır vermektir (bunu "post-xfer exec" betiğinde geri ayırmalısınız).
Daemon en az sürüm 3.2.1 olmalıdır.
--list-only Bu seçenek, kaynak dosyaların aktarılması yerine listelenmesine neden olur. Tek bir kaynak argümanı varsa ve hedef belirtilmemişse bu seçenek zımnen varsayılır; bu nedenle temel kullanım amaçları şunlardır:
hedef argümanı içeren bir kopyalama komutunu dosya listeleme komutuna dönüştürmek, veyabirden fazla kaynak argümanı belirtebilmek. Not: hedefi dahil ettiğinizden emin olun.
DİKKAT: Joker karakter içeren bir kaynak argümanının kabuk tarafından birden fazla argümana genişletildiğini unutmayınız; bu nedenle bu seçeneği zımnen etkinleştirmek için tek bir joker karakterli argüman belirtmeye çalışmak asla güvenli değildir. Güvenli bir örnek şudur:
rsync -av --list-only foo* dest/
Bu seçenek her zaman şuna benzer bir çıktı biçimi kullanır:
drwxrwxr-x 4,096 2022/09/30 12:53:11 support -rw-rw-r-- 80 2005/01/11 10:37:37 support/Makefile
Bu çıktı stilini etkileyen tek seçenek (3.1.0'dan itibaren) --human-readable (-h) seçeneğidir. Varsayılan olarak boyutlar, basamak ayırıcıları içeren bayt sayıları olarak çıktı verilir (14 karakter genişliğinde bir sütunda). En az bir -h seçeneği belirtilmesi, boyutların birim son ekleriyle çıktı verilmesini sağlar. Basamak ayırıcıları olmayan eski usul bayt boyutu çıktılarını (ve 11 karakter genişliğinde bir sütun) istiyorsanız --no-h seçeneğini kullanın.
Uyumluluk notu: rsync 2.6.3 veya daha eski bir sürüm olan bir rsync'ten uzak dosya listesi talep ederken, özyinelemeli olmayan bir listeleme isterseniz bir hatayla karşılaşabilirsiniz. Bunun nedeni, bir dosya listelemenin --recursive olmadan --dirs seçeneğini zımnen etkinleştirmesidir ve eski rsync sürümlerinde bu seçenek yoktur. Bu sorunu önlemek için, ya --no-dirs seçeneğini belirtin (bir dizinin içeriğini genişletmeniz gerekmiyorsa) ya da özyinelemeyi açıp alt dizinlerin içeriklerini hariç tutun: -r --exclude='/*/*'.
--bwlimit=RATE
Bu seçenek, soket üzerinden gönderilen veriler için saniye başına birim cinsinden belirtilen maksimum aktarım hızını belirlemenizi sağlar. HIZ (RATE) değeri, bir boyut çarpanını belirtmek için bir karakter son eki alabilir ve kesirli bir değer olabilir (örneğin --bwlimit=1.5m). Herhangi bir son ek belirtilmezse, değerin 1024 baytlık birimler halinde olduğu varsayılır (sanki sonuna "K" veya "KiB" eklenmiş gibi). Tüm kullanılabilir son eklerin açıklaması için --max-size seçeneğine bakınız. 0 değeri herhangi bir sınır olmadığını belirtir.
Geriye dönük uyumluluk nedenleriyle, hız sınırı en yakın KiB birimine yuvarlanacaktır; bu nedenle saniyede 1024 bayttan daha küçük bir hız mümkün değildir.
Rsync soket üzerinden verileri bloklar halinde yazar ve bu seçenek hem rsync'in yazdığı blokların boyutunu sınırlar hem de ortalama aktarım hızını talep edilen sınırda tutmaya çalışır. Rsync'in bir veri bloğu yazıp ardından ortalama hızı uyumlu hale getirmek için uyuduğu bazı dalgalanmalar görülebilir.
Dahili veri arabelleğe alması nedeniyle, --progress seçeneği verilerin ne kadar hızlı gönderildiğini tam olarak yansıtmayabilir. Bunun nedeni, veriler hızlıca arabelleğe alındığında bazı dosyaların hızlıca gönderiliyormuş gibi görünmesi, çıktı arabelleğinin boşaltılması gerçekleştiğinde ise diğerlerinin çok yavaş görünmesidir. Bu durum gelecekteki bir sürümde düzeltilebilir.
Ayrıca bu seçeneğin daemon sürümüne de bakınız.
--stop-after=MINS, (--time-limit=MINS) Bu seçenek rsync'e belirtilen dakika sayısı geçtiğinde kopyalamayı durdurmasını söyler.
Maksimum esneklik için rsync bu seçeneği uzak rsync'e iletmez, çünkü genellikle bağlantının bir tarafının belirtildiği gibi çıkması yeterlidir. Bu, seçeneğin bağlantının yalnızca bir tarafı desteklediğinde bile kullanılabilmesini sağlar. İhtiyaç duyulursa, --remote-option (-M) seçeneğini kullanarak uzak tarafa zaman sınırı hakkında bilgi verebilirsiniz.
Bu seçeneğin --time-limit sürümü kullanımdan kaldırılmıştır.
--stop-at=y-m-dTh:m Bu seçenek rsync'e belirtilen zaman noktasına ulaşıldığında kopyalamayı durdurmasını söyler. Tarih ve saat, yerel saat diliminde yıl-ay-günTsaat:dakika sayısal biçiminde (örneğin 2000-12-31T23:59) tam olarak belirtilebilir. Tarih sayılarını tire yerine eğik çizgi kullanarak ayırmayı seçebilirsiniz.
Değer, 2 basamaklı bir yıl belirtmek ve/veya çeşitli değerleri atlamak gibi çeşitli şekillerde de kısaltılabilir. Her durumda, değer sağlanan bilgilerin eşleştiği bir sonraki olası zaman noktası olarak alınacaktır. Değer geçerli saati veya geçmiş bir saati belirtiyorsa rsync bir hata vererek sonlanır.
Örneğin, "1-30" bir sonraki 30 Ocak gününü (yerel saatle gece yarısı), "14:00" bir sonraki saat 14:00'ü, "1" ayın bir sonraki 1. gününü gece yarısı, "31" 31. gününde durabileceğimiz bir sonraki ayı ve ":59" saatten sonraki bir sonraki 59. dakikayı belirtir.
Maksimum esneklik için rsync bu seçeneği uzak rsync'e iletmez, çünkü genellikle bağlantının bir tarafının belirtildiği gibi çıkması yeterlidir. Bu, seçeneğin bağlantının yalnızca bir tarafı desteklediğinde bile kullanılabilmesini sağlar. İhtiyaç duyulursa, --remote-option (-M) seçeneğini kullanarak uzak tarafa zaman sınırı hakkında bilgi verebilirsiniz. Uzak sunucunun yerel sunucunuzdan farklı bir varsayılan saat dilimine sahip olabileceğini unutmayınız.
--fsync Alıcı tarafın tamamlanan her dosyayı fsync etmesini sağlar. Bu aktarımı yavaşlatabilir, ancak kritik dosyaları güncellerken iç rahatlığı sağlamaya yardımcı olabilir.
--write-batch=FILE
Daha sonra --read-batch ile başka bir özdeş hedefe uygulanabilecek bir dosya kaydeder. Ayrıntılar için "TOPLU İŞLEM MODU" (BATCH MODE) bölümüne ve ayrıca --only-write-batch seçeneğine bakınız.
--only-write-batch=FILE
Bu seçenek, toplu iş dosyası (batch) oluşturulurken hedef sistemde hiçbir güncelleme yapılmaması dışında --write-batch seçeneği gibi çalışır. Bu, değişiklikleri hedef sisteme başka bir yolla taşımanıza ve ardından --read-batch aracılığıyla uygulamanıza olanak tanır.
Toplu iş dosyasını doğrudan taşınabilir bir medyaya (örneğin bir USB belleğe) yazmaktan çekinmeyin: Bu medya aktarım tamamlanmadan önce dolarsa, kısmi aktarımı hedefe uygulayabilir ve kalan değişiklikleri almak için tüm süreci tekrarlayabilirsiniz (çoklu güncelleme döngüsü sırasında kısmen güncellenmiş bir hedef sistemin olmasını önemsemiyorsanız).
Ayrıca, değişiklikleri uzak bir sisteme gönderirken (push) bant genişliğinden tasarruf edeceğinizi unutmayınız; çünkü bu, toplu verinin gönderenden doğrudan toplu iş dosyasına yönlendirilmesini sağlar ve verilerin alıcıya ağ üzerinden akmasına gerek kalmaz (veri çekerken -pull- gönderen taraf uzakta olduğu için toplu iş dosyasını yazamaz).
--read-batch=FILE
Daha önce --write-batch seçeneğiyle oluşturulmuş bir dosyada saklanan tüm değişiklikleri uygular. Eğer DOSYA (FILE) - olarak belirtilirse, toplu iş verileri standart girdiden okunur. Ayrıntılar için "TOPLU İŞLEM MODU" (BATCH MODE) bölümüne bakınız.
--protocol=NUM
Belirtilen NUM protokol sürümünün kullanılmasını zorlar. Bu, rsync'in daha eski bir sürümüyle uyumlu bir toplu iş dosyası oluşturmak için yararlıdır. Örneğin, rsync 2.6.4 sürümü --write-batch seçeneğiyle kullanılırken, --read-batch seçeneğini çalıştırmak için rsync 2.6.3 kullanılacaksa, toplu iş dosyasında daha eski protokol sürümünün kullanılmasını zorlamak için toplu iş dosyasını oluştururken --protocol=28 seçeneğini kullanmalısınız (okuma sistemindeki rsync sürümünü yükseltemediğinizi varsayarsak).
--iconv=CONVERT_SPEC
Rsync bu seçeneği kullanarak dosya adlarını karakter setleri arasında dönüştürebilir. CONVERT_SPEC değeri olarak "." belirtilmesi, rsync'e varsayılan karakter setini sistemin yerel ayarı (locale) üzerinden aramasını söyler. Alternatif olarak, --iconv=YEREL,UZAK (örneğin --iconv=utf8,iso88591) biçiminde aralarında virgül bulunan bir yerel ve bir uzak karakter seti belirterek yapılacak dönüşümü tam olarak tanımlayabilirsiniz. Bu sıralama, dosyaları gönderirken de çekerken de seçeneğin aynı kalmasını sağlar. Son olarak, herhangi bir dönüşümü kapatmak için --no-iconv veya CONVERT_SPEC olarak "-" belirtebilirsiniz. Bu seçeneğin varsayılan ayarı sisteme özeldir ve RSYNC_ICONV ortam değişkeni aracılığıyla da etkilenebilir.
Yerel iconv kütüphanenizin hangi karakter seti adlarını desteklediğini görmek için iconv --list komutunu çalıştırabilirsiniz.
Eğer --secluded-args (-s) seçeneğini belirtirseniz, rsync uzak konağa gönderilen ve komut satırında belirttiğiniz dosya adlarını dönüştürecektir. Ayrıca --files-from seçeneğine de bakınız.
Rsync'in filtre dosyalarındaki (hariç tutma/dahil etme dosyaları dahil) dosya adlarında herhangi bir dönüştürme yapmadığını unutmayınız. Aktarımın her iki tarafında da eşleşebilecek kurallar belirlediğinizden emin olmak sizin sorumluluğunuzdadır. Örneğin, iki taraftaki dosya adı farklılıklarını gidermek için ek dahil etme/hariç tutma kuralları belirtebilirsiniz.
İzin veren bir rsync daemon'ına bir --iconv seçeneği ilettiğinizde, daemon sizin geçirdiğiniz uzak karakter setinden bağımsız olarak kendi "charset" yapılandırma parametresinde belirtilen karakter setini kullanır. Bu nedenle, bir daemon aktarımı için yalnızca yerel karakter setini belirtmekte özgürsünüz (örneğin --iconv=utf8).
--ipv4, -4 veya --ipv6, -6 Soket oluştururken veya ssh çalıştırırken rsync'e IPv4/IPv6'yı tercih etmesini söyler. Bu, rsync'in doğrudan kontrol ettiği soketleri (örneğin bir rsync daemon'ına doğrudan bağlanırken yapılan giden soket bağlantısı) etkilediği gibi, rsync ssh'ın uzak kabuk olarak kullanıldığını algılayabildiğinde -4 veya -6 seçeneğinin ssh'a iletilmesini de sağlar. Diğer uzak kabuklar için doğrudan "--rsh KABUK -4" seçeneğini (veya hangi IPv4/IPv6 ipucu seçeneklerini kullanıyorsa) belirtmeniz gerekecektir.
Ayrıca bu seçeneklerin daemon sürümüne de bakınız.
Rsync IPv6 desteği olmadan derlenmişse, --ipv6 seçeneğinin hiçbir etkisi olmayacaktır. Bu durumda rsync --version çıktısında "no IPv6" ibaresi yer alacaktır.
--checksum-seed=NUM
Sağlama toplamı tohumunu (checksum seed) NUM tamsayısı olarak ayarlar. Bu 4 baytlık tohum, her blok ve MD4 dosya sağlama toplamı hesaplamasına dahil edilir (daha modern olan MD5 dosya sağlama toplamları tohum kullanmaz). Varsayılan olarak sağlama toplamı tohumu sunucu tarafından oluşturulur ve varsayılan olarak mevcut time() değerini alır. Bu seçenek, tekrarlanabilir blok sağlama toplamları isteyen uygulamalar için veya kullanıcının daha rastgele bir tohum istediği durumlarda belirli bir sağlama toplamı tohumu ayarlamak için kullanılır. NUM değerinin 0 yapılması rsync'in varsayılan time() tohumunu kullanmasını sağlar.
Daemon Options
Rsync daemon başlatılırken izin verilen seçenekler şunlardır:
--daemon
Bu seçenek rsync'e bir daemon olarak çalışmasını söyler. Başlattığınız daemon'a bir rsync istemcisi kullanılarak konak::modül veya rsync://konak/modül/ sözdizimiyle erişilebilir.
Eğer standart girdi bir soket ise, rsync inetd aracılığıyla çalıştırıldığını varsayacaktır; aksi takdirde mevcut uçbirimden ayrılacak ve bir arka plan daemon'ı haline gelecektir. Daemon, bir istemci tarafından yapılan her bağlantıda yapılandırma dosyasını (rsyncd.conf) okuyacak ve isteklere buna göre yanıt verecektir.
Daha fazla ayrıntı için rsyncd.conf(5) kılavuz sayfasına bakınız.
--address=ADDRESS
Varsayılan olarak rsync, --daemon seçeneğiyle bir daemon olarak çalıştırıldığında genel adres şablonuna (wildcard address) bağlanır. --address seçeneği, bağlanılacak belirli bir IP adresini (veya makine adını) belirtmenizi sağlar. Bu, --config seçeneğiyle birlikte sanal barındırmayı (virtual hosting) mümkün kılar.
Ayrıca rsyncd.conf kılavuz sayfasındaki address genel seçeneğine ve --address seçeneğinin istemci sürümüne bakınız.
--bwlimit=RATE
Bu seçenek, daemon'ın soket üzerinden gönderdiği veriler için maksimum aktarım hızını belirlemenizi sağlar. İstemci hala daha küçük bir --bwlimit değeri belirtebilir ancak daha büyük bir değere izin verilmez.
Ek ayrıntılar için --bwlimit seçeneğinin istemci sürümüne bakınız.
--config=FILE
Varsayılandan farklı bir yapılandırma dosyası belirtir. Bu seçenek yalnızca --daemon belirtildiğinde geçerlidir. Varsayılan dosya, daemon bir uzak kabuk programı üzerinden çalışmıyorsa ve uzak kullanıcı süper kullanıcı değilse /etc/rsyncd.conf şeklindedir; bu durumda varsayılan dosya mevcut dizindeki (genellikle $HOME) rsyncd.conf dosyasıdır.
--dparam=OVERRIDE, -M Bu seçenek, rsync'i daemon modunda başlatırken bir daemon yapılandırma parametresi ayarlamak için kullanılabilir. Bu, parametrenin ilk modül tanımından önce global ayarların sonuna eklenmesine eşdeğerdir. Parametre adlarını isterseniz boşluksuz belirtebilirsiniz. Örneğin:
rsync --daemon -M pidfile=/path/rsync.pid
--no-detach
Bir daemon olarak çalışırken, bu seçenek rsync'e kendisini ayırmamasını ve bir arka plan işlemi haline gelmemesini söyler. Bu seçenek, Cygwin üzerinde bir hizmet olarak çalışırken gereklidir ve rsync daemontools veya AIX'in System Resource Controller gibi bir program tarafından denetlendiğinde de yararlı olabilir. rsync bir hata ayıklayıcı altında çalıştırıldığında da --no-detach seçeneğinin kullanılması önerilir. rsync inetd veya sshd üzerinden çalıştırılıyorsa bu seçeneğin hiçbir etkisi yoktur.
--port=PORT Daemon'ın dinleyeceği varsayılan 873 portu yerine alternatif bir TCP port numarası belirtir.
Ayrıca rsyncd.conf kılavuz sayfasındaki port genel ayarına ve --port seçeneğinin istemci sürümüne bakınız.
--log-file=FILE Bu seçenek, rsync daemon'ına yapılandırma dosyasındaki "log file" ayarı yerine verilen günlük dosyası adını kullanmasını söyler.
Ayrıca --log-file seçeneğinin istemci sürümüne bakınız.
--log-file-format=FORMAT Bu seçenek, rsync daemon'ına yapılandırma dosyasındaki "log format" ayarı yerine verilen FORMAT karakter dizisini kullanmasını söyler. Karakter dizisi boş olmadığı sürece "aktarım günlüklemesini" (transfer logging) de etkinleştirir; boş bırakılırsa aktarım günlüklemesi kapatılır.
Ayrıca --log-file-format seçeneğinin istemci sürümüne bakınız.
--sockopts Bu seçenek, rsyncd.conf dosyasındaki soket seçenekleri ayarını geçersiz kılar ve aynı sözdizimine sahiptir.
Ayrıca --sockopts seçeneğinin istemci sürümüne bakınız.
--verbose, -v Bu seçenek, daemon'ın başlangıç aşamasında günlüğe kaydettiği bilgi miktarını artırır. İstemci bağlandıktan sonra, daemon'ın ayrıntı düzeyi istemcinin kullandığı seçenekler ve modülün yapılandırma bölümündeki "max verbosity" ayarı tarafından kontrol edilecektir.
Ayrıca --verbose seçeneğinin istemci sürümüne bakınız.
--ipv4, -4 veya --ipv6, -6
Rsync'e, rsync daemon'ının bağlantıları dinlemek için kullanacağı giden soketleri oluştururken IPv4/IPv6'yı tercih etmesini söyler. Bu seçeneklerden biri, çekirdekteki bir IPv6 hatasını gidermek için Linux'un eski sürümlerinde gerekli olabilir (portu başka hiçbir şey kullanmadığı halde "address already in use" hatası görürseniz, daemon'ı başlatırken --ipv6 veya --ipv4 belirtmeyi deneyin).
Ayrıca bu seçeneklerin istemci sürümüne bakınız.
Rsync IPv6 desteği olmadan derlenmişse, --ipv6 seçeneğinin hiçbir etkisi olmayacaktır. Bu durumda rsync --version çıktısında "no IPv6" ibaresi yer alacaktır.
--help, -h
--daemon seçeneğinden sonra belirtildiğinde, bir rsync daemon'ı başlatmak için kullanılabilir olan seçenekleri açıklayan kısa bir yardım sayfası yardım sayfası yazdırır.
Filter Rules
Filtre kuralları, dosyaların nasıl işleneceğine ilişkin çeşitli yönlerin özel olarak kontrol edilmesini sağlar:
o Gönderen tarafın aktarım hiyerarşisini açıklayan dosya listesine hangi dosyaları koyacağını kontrol edin
o Alıcı tarafın, dosya gönderenin dosya listesinde olmadığında hangi dosyaları silinmekten koruyacağını kontrol edin
o Genişletilmiş öznitelikler (xattrs) kopyalanırken hangi genişletilmiş öznitelik adlarının atlanacağını kontrol edin
Kurallar ya doğrudan seçenek argümanları aracılığıyla belirtilir ya da bir veya daha fazla dosyadan okunabilir. Filtre kuralı dosyaları, kopyalanan dosya hiyerarşisinin bir parçası bile olabilir ve ağacın farklı bölümlerini farklı şekillerde etkileyebilir.
BASİT DAHİL ETME/HARİÇ TUTMA KURALLARI İlk olarak, dahil etme (include) ve hariç tutma (exclude) kurallarının aktarılacak dosyaları nasıl etkilediğinin temel bilgilerini ele alacağız ve herhangi bir silme yan etkisini göz ardı edeceğiz. Filtre kuralları esas olarak rsync'in "özyinelemeli olarak girdiği" dizinlerin içeriğini etkiler, ancak komut satırında bir argüman olarak belirtilen en üst düzeydeki bir öğeyi de etkileyebilir.
Eşleşmeyen herhangi bir dosya/dizin için varsayılan davranış, onun aktarıma dahil edilmesidir; bu da dosya/dizini gönderenin dosya listesine koyar. Bir hariç tutma kuralının kullanılması, bir veya daha fazla eşleşen dosya/dizinin gönderenin dosya listesinin dışında bırakılmasına neden olur. Bir dahil etme kuralı, çok fazla dosyayla eşleşen bir hariç tutma kuralının etkisini sınırlandırmak için kullanılabilir.
Kurallar üzerinde çalışırken, rsync'ten neyin hariç tutulduğunu/dahil edildiğini ve nedenini size söylemesini istemek yararlı olabilir. --debug=FILTER veya (dosya çekerken) -M--debug=FILTER seçeneğinin belirtilmesi, bir dosya veya dizin her dahil edildiğinde veya hariç tutulduğunda ve bunun hangi kuralla eşleştiğini belirten bir mesaj çıktı veren FILTER hata ayıklama bilgilerinin 1. düzeyini etkinleştirir. 3.2.4 sürümünden itibaren, bir filtre kuralının sonunda boşluk varsa da uyaracaktır; çünkü "foo " (sondaki boşlukla birlikte) hariç tutma kuralı "foo" adlı bir dosyayı hariç tutmayacaktır.
Hariç tutma ve dahil etme kuralları, bir dosya uzantısını veya dosya adının bir kısmını eşleştirmenize olanak tanıyan joker karakterli EŞLEŞTİRME KURALLARI (kabuk joker karakterlerine benzer) belirtebilir.
Bir kuralın yalnızca bir dizini etkilemesi, dosya adının sonuna bir eğik çizgi konularak sağlanabilir.
BASİT DAHİL ETME/HARİÇ TUTMA ÖRNEĞİ Gönderen tarafta aşağıdaki dosya ağacının oluşturulduğunu varsayalım:
mkdir x/ touch x/dosya.txt mkdir x/y/ touch x/y/dosya.txt touch x/y/zzz.txt mkdir x/z/ touch x/z/dosya.txt
Bu durumda, aşağıdaki rsync komutu "x/y/dosya.txt" dosyasını ve onu tutmak için gereken dizinleri aktaracak ve uzak sunucuda "/tmp/x/y/dosya.txt" yolunun oluşmasını sağlayacaktır:
rsync -ai -f'+ x/' -f'+ x/y/' -f'+ x/y/dosya.txt' -f'- *' x konak:/tmp/
Ek bilgi: bu kopyalama işlemi -R seçeneği kullanılarak da gerçekleştirilebilirdi (ancak silme işlemleri etkinse bu iki komut farklı davranır):
rsync -aiR x/y/dosya.txt konak:/tmp/
Aşağıdaki komut, "x" dizininin dahil edilmesine ihtiyaç duymaz çünkü bu dizin aktarımın bir parçası değildir (sondaki eğik çizgiye dikkat ediniz). Bu komutun çalıştırılması yalnızca "/tmp/x/dosya.txt" dosyasını kopyalayacaktır çünkü "y" ve "z" dizinleri hariç tutulur:
rsync -ai -f'+ dosya.txt' -f'- *' x/ konak:/tmp/x/
Bu komut, "x" dizinini ve içerdiği diğer her şeyi kopyalarken zzz.txt dosyasını atlayacaktır:
rsync -ai -f'- zzz.txt' x konak:/tmp/
SİLME SIRASINDA FİLTRE KURALLARI Varsayılan olarak dahil etme ve hariç tutma filtre kuralları hem göndereni (dosya listesini oluştururken) hem de alıcıyı (silme işlemlerini hesaplamak için dosya listelerini oluştururken) etkiler. Herhangi bir silme seçeneği etkin değilse, alıcı silme ile ilgili dosya listelerini oluşturmayı atlar. Bu iki taraflı varsayılan davranış, FILTER RULES IN DEPTH bölümünde açıklandığı gibi, yalnızca gönderen kurallarını veya yalnızca alıcı kurallarını belirtebilmeniz için manuel olarak geçersiz kılınabilir.
Silme işlemi sırasında, bir hariç tutma kuralı bir dosyanın alıcı tarafta kaldırılmasını engellerken, bir dahil etme kuralı bu korumayı geçersiz kılar (dosyayı silinme riskiyle karşı karşıya bırakır). Varsayılan davranış bir dosyanın risk altında olmasıdır -- güvenliği, gönderenden gelen karşılık gelen bir dosya ile eşleşmesine bağlıdır.
İki taraflı hariç tutma etkisine bir örnek, iki sistem arasında bir C geliştirme dizininin kopyalanmasıyla gösterilebilir. Bir güncelleme kopyalaması yaparken, alıcı tarafın kendi dosyalarını derleyebilmesi ve halihazırda doğru olan nesne dosyalarını kaybetmemesi (alıcı koruması) için derlenmiş yürütülebilir dosyayı ve .o dosyalarını kopyalamayı atlamak (gönderen gizlemesi) isteyebilirsiniz. Örneğin:
rsync -ai --del -f'- *.o' -f'- cmd' src konak:/dest/
Dizin yapısının değişmiş olma olasılığı varsa -f'-p *.o' kullanmanın -f'- *.o' kullanmaktan daha iyi olduğunu unutmayınız. "p" niteleyicisi FILTER RULE MODIFIERS bölümünde ele alınmıştır.
Son bir not olarak, eğer kabuğunuz genişletilmemiş joker karakterleri önemsemiyorsa, boşluk yerine alt çizgi kullanarak ve tırnak işaretlerini kaldırarak filtre seçeneklerinin yazımını basitleştirebilirsiniz. Örneğin, yukarıdaki filtre seçeneklerinin yerine -f -_*.o -f -_cmd (ve benzerleri) kullanılabilir.
AYRINTILI FİLTRE KURALLARI
Rsync, eski tarz dahil etme/hariç tutma kurallarını ve yeni tarz filtre kurallarını destekler. Eski kurallar, --include ve --exclude seçeneklerinin yanı sıra --include-from ve --exclude-from seçenekleri kullanılarak belirtilir. Bunların davranışları sınırlıdır ancak başlarında "-" veya "+" öneki gerektirmezler. Eski tarz bir hariç tutma kuralı, herhangi bir niteleyici içermeyen bir "- ad" filtre kuralına dönüştürülür ve eski tarz bir dahil etme kuralı ise niteleyici içermeyen bir "+ ad" filtre kuralına dönüştürülür.
Rsync, komut satırında belirtilen ve/veya dosyalardan okunan filtre kurallarından sıralı bir liste oluşturur. Yeni tarz filtre kuralları şu sözdizimine sahiptir:
KURAL [ŞABLON_VEYA_DOSYAADI] KURAL,NİTELEYİCİLER [ŞABLON_VEYA_DOSYAADI]
Aşağıda açıklandığı gibi kısa veya uzun KURAL adlarını kullanma seçeneğiniz vardır. Kısa adlandırılmış bir kural kullanırsanız, KURAL'ı NİTELEYİCİLER'den ayıran ',' işareti isteğe bağlıdır. Bunu takip eden ŞABLON veya DOSYAADI (mevcut olduğunda) tek bir boşluktan veya bir alt çizgiden (_) sonra gelmelidir. Diğer tüm ek boşluklar ve/veya alt çizgiler şablon adının bir parçası olarak kabul edilir. Kullanılabilir kural önekleri şunlardır:
exclude, '-' varsayılan olarak hem bir gizleme (hide) hem de bir koruma (protect) olan bir hariç tutma şablonu belirtir.
include, '+' varsayılan olarak hem bir gösterme (show) hem de bir risk (risk) olan bir dahil etme şablonu belirtir.
merge, '.' daha fazla kural okumak için istemci tarafındaki bir birleştirme dosyasını (merge-file) belirtir.
dir-merge, ':'
dizin başına bir birleştirme dosyası belirtir. Bu tür bir filtre kuralının kullanılması, gönderen tarafın filtre kontrolüne güvenmenizi gerektirir, bu nedenle --trust-sender seçeneği altında belirtilen yan etkiye sahiptir.
hide, 'H'
dosyaları aktarımdan gizlemek için bir şablon belirtir. Yalnızca gönderen tarafı etkileyen bir hariç tutmaya eşdeğerdir, bu nedenle -f'H foo' seçeneği -f'-s foo' olarak da belirtilebilir.
show, 'S'
şablonla eşleşen dosyalar gizlenmez. Yalnızca gönderen tarafı etkileyen bir dahil etmeye eşdeğerdir, bu nedenle -f'S foo' seçeneği -f'+s foo' olarak da belirtilebilir.
protect, 'P'
dosyaları silinmekten korumak için bir şablon belirtir. Yalnızca alıcı tarafı etkileyen bir hariç tutmaya eşdeğerdir, bu nedenle -f'P foo' seçeneği -f'-r foo' olarak da belirtilebilir.
risk, 'R'
şablonla eşleşen dosyalar korunmaz. Yalnızca alıcı tarafı etkileyen bir dahil etmeye eşdeğerdir, bu nedenle -f'R foo' seçeneği -f'+r foo' olarak da belirtilebilir.
clear, '!' mevcut dahil etme/hariç tutma listesini temizler (argüman almaz)
Kurallar bir dosyadan okunurken (merge veya dir-merge kullanılarak), boş satırlar ve '#' ile başlayan tam satır yorumları göz ardı edilir (diyez karakteri içeren dosya adı kuralları etkilenmez).
Ayrıca --filter, --include ve --exclude seçeneklerinin her birinin tek bir kural/şablon aldığını unutmayınız. Birden fazla kural eklemek için komut satırındaki seçenekleri tekrarlayabilir, --filter seçeneğinin birleştirme dosyası sözdizimini kullanabilir veya --include-from / --exclude-from seçeneklerini kullanabilirsiniz.
ŞABLON EŞLEŞTİRME KURALLARI Yukarıda belirtilen kuralların çoğu, kuralın neyle eşleşeceğini belirten bir argüman alır. Rsync bir dizin hiyerarşisinde özyineleme yapıyorsa, rsync gönderilecek dosya adlarını bulurken her bir şablonun iniş yolundaki her dizinin adıyla eşleştirildiğini unutmayınız.
Şablon argümanı için eşleştirme kuralları birkaç biçimde olur:
o Bir şablon bir / içeriyorsa (sondaki eğik çizgi sayılmaz) veya bir "" (bir eğik çizgiyle eşleşebilir) içeriyorsa, şablon aktarımdaki tüm öncü dizinler dahil olmak üzere tam yol adı ile eşleştirilir. Şablon bir (sondaki olmayan) / veya bir "" içermiyorsa, yalnızca dosya adının veya yol adının son bileşeni ile eşleştirilir. Örneğin, foo son yol bileşeninin "foo" olması gerektiği anlamına gelirken, foo/bar yolun son 2 öğesiyle eşleşir (her iki öğe de aktarım içinde olduğu sürece).
o Sonunda bir / olan bir şablon yalnızca bir dizinle eşleşir, normal bir dosya, sembolik bağlantı veya aygıtla eşleşmez.
o Başında bir / olan bir şablon, sonu yerine aktarım yolunun başlangıcına sabitlenir. Örneğin, /foo/** veya /foo/bar/** yalnızca yoldaki öncü öğelerle eşleşir. Kural dizin başına bir filtre dosyasından okunursa, eşleşen aktarım yolu aktarımın en üstü yerine filtre dosyasının seviyesinden başlayacaktır. Aktarımın kökünde eşleşen bir şablonun nasıl belirtileceğine ilişkin tam bir tartışma için ANCHORING INCLUDE/EXCLUDE PATTERNS bölümüne bakınız.
Rsync, şablonun şu üç joker karakterden birini içerip içermediğini kontrol ederek basit bir dize eşleştirmesi ile joker karakter eşleştirmesi arasında seçim yapar: '*', '?' ve '[':
o Bir '?' eğik çizgi (/) hariç herhangi bir tek karakterle eşleşir.
o Bir '*' eğik çizgi olmayan sıfır veya daha fazla karakterle eşleşir.
o Bir '**' eğik çizgiler dahil sıfır veya daha fazla karakterle eşleşir.
o Bir '[' tek bir karakterle eşleşmesi gereken [a-z] veya [[:alpha:]] gibi bir karakter sınıfı başlatır.
o Şablondaki sondaki ***, tek bir kural kullanarak bir dizini ve tüm içeriğini eşleştirmenize olanak tanıyan bir kısaltmadır. Örneğin, "dizin_adı/***" belirtilmesi hem "dizin_adı" diziniyle (sanki "dizin_adı/" belirtilmiş gibi) hem de dizindeki her şeyle (sanki "dizin_adı/**" belirtilmiş gibi) eşleşecektir.
o Bir joker karakteri kaçırmak (escape) için bir ters eğik çizgi kullanılabilir, ancak bu yalnızca eşleşme şablonunda en az bir joker karakter mevcut olduğunda bir kaçış karakteri olarak yorumlanır. Örneğin, "foo\bar" şablonu o tek ters eğik çizgiyle kelimesi kelimesine eşleşirken, "foo\bar*" şablonunun, "\b" ifadesinin sadece "b" haline gelmesini önlemek için "foo\bar*" olarak değiştirilmesi gerekecektir.
Bazı hariç tutma/dahil etme eşleştirme örnekleri şunlardır:
o -f'- *.o' seçeneği, sonu .o ile biten tüm dosya adlarını hariç tutar
o -f'- /foo' seçeneği, aktarım kök dizininde foo adında bir dosyayı (veya dizini) hariç tutar
o -f'- foo/' seçeneği, foo adındaki tüm dizinleri hariç tutar
o -f'- foo/*/bar' seçeneği, foo adındaki bir dizinin iki seviye altında bulunan bar adındaki tüm dosya/dizinleri hariç tutar (eğer foo aktarımın içindeyse)
o -f'- /foo/**/bar' seçeneği, foo adındaki en üst düzey bir dizinin iki veya daha fazla seviye altında bulunan bar adındaki tüm dosya/dizinleri hariç tutar (bunun /foo/bar dosyasını hariç tutmadığını unutmayınız)
o -f'+ */' -f'+ *.c' -f'- *' seçenekleri tüm dizinleri ve .c kaynak dosyalarını dahil eder, başka hiçbir şeyi dahil etmez
o -f'+ foo/' -f'+ foo/bar.c' -f'- *' seçenekleri yalnızca foo dizinini ve foo/bar.c dosyasını dahil eder (foo dizini açıkça dahil edilmelidir, aksi takdirde "- *" tarafından hariç tutulacaktır)
FİLTRE KURALI NİTELEYİCİLERİ Bir dahil etme (+) veya hariç tutma (-) kuralından sonra aşağıdaki niteleyiciler kabul edilir:
o Bir / işareti, dahil etme/hariç tutma kuralının mevcut öğenin mutlak yol adı ile eşleştirilmesi gerektiğini belirtir. Örneğin, -f'-/ /etc/passwd' seçeneği, aktarım "/etc" dizininden dosya gönderirken passwd dosyasını hariç tutacaktır ve "-/ altdizin/foo" seçeneği, "foo" bir "altdizin" dizininin içinde olduğunda, "foo" mevcut aktarımın kökünde olsa bile onu her zaman hariç tutacaktır.
o Bir ! işareti, dahil etme/hariç tutmanın şablon eşleşmediğinde yürürlüğe girmesi gerektiğini belirtir. Örneğin, -f'-! */' seçeneği dizin olmayan her şeyi hariç tutacaktır.
o Bir C işareti, tüm global CVS hariç tutma kurallarının "-C" yerine hariç tutmalar olarak eklenmesi gerektiğini belirtmek için kullanılır. Ardından hiçbir argüman gelmemelidir.
o Bir s harfi, kuralın gönderen taraf için geçerli olduğunu belirtmek için kullanılır. Bir kural gönderen tarafı etkilediğinde, gönderenin dosya listesine hangi dosyaların konulacağını etkiler. --delete-excluded belirtilmediği sürece varsayılan davranış bir kuralın her iki tarafı da etkilemesidir; belirtildiğinde ise varsayılan kurallar yalnızca gönderen tarafı etkiler hale gelir. Ayrıca, gönderen taraf dahil etme/hariç tutmalarını belirtmenin alternatif bir yolu olan gizleme (H) ve gösterme (S) kurallarına bakınız.
o Bir r harfi, kuralın alıcı taraf için geçerli olduğunu belirtmek için kullanılır. Bir kural alıcı tarafı etkilediğinde, dosyaların silinmesini engeller. Daha fazla bilgi için s niteleyicisine bakınız. Ayrıca, alıcı taraf dahil etme/hariç tutmalarını belirtmenin alternatif bir yolu olan koruma (P) ve risk (R) kurallarına bakınız.
o Bir p harfi, bir kuralın silinebilir (perishable) olduğunu belirtir; yani silinmekte olan dizinlerde bu kural göz ardı edilir. Örneğin, --cvs-exclude (-C) seçeneğinin "CVS" ve "*.o" gibi şeyleri hariç tutan varsayılan kuralları silinebilir olarak işaretlenmiştir ve kaynakta kaldırılan bir dizinin hedefte silinmesini engellemez.
o Bir x harfi, bir kuralın xattr kopyalama/silme işlemlerinde xattr adlarını etkilediğini belirtir (ve bu nedenle dosya/dizin adları eşleştirilirken göz ardı edilir). Hiçbir xattr eşleştirme kuralı belirtilmemişse, varsayılan bir xattr filtreleme kuralı kullanılır (bkz. --xattrs seçeneği).
BİRLEŞTİRME DOSYASI FİLTRE KURALLARI Yukarıdaki FILTER RULES bölümünde tanıtıldığı gibi, bir birleştirme (.) veya bir dizin birleştirme (:) filtre kuralı belirtebirken tüm dosyaları filtre kurallarınızla birleştirebilirsiniz.
İki tür birleştirilmiş dosya vardır -- tek örnekli (single-instance - '.') ve dizin başına (per-directory - ':'). Tek örnekli bir birleştirme dosyası bir kez okunur ve kuralları filtre listesine "." kuralının yerine dahil edilir. Dizin başına birleştirme dosyaları için rsync, geçtiği her dizini belirtilen dosya adı için tarayacak ve dosya mevcut olduğunda içeriğini devralınan mevcut kurallar listesiyle birleştirecektir. Dizin başına bu kural dosyaları gönderen tarafta oluşturulmalıdır çünkü aktarılacak kullanılabilir dosyalar için taranan taraf gönderen taraftır. Dizin başına bu kural dosyalarının, hangi dosyaların silinmeyeceğini etkilemesini istiyorsanız alıcı tarafa da aktarılması gerekebilir (aşağıdaki PER-DIRECTORY RULES AND DELETE bölümüne bakınız).
Bazı örnekler:
merge /etc/rsync/default.rules . /etc/rsync/default.rules dir-merge .per-dir-filter dir-merge,n- .non-inherited-per-dir-excludes :n- .non-inherited-per-dir-excludes
Bir birleştirme veya dizin birleştirme kuralından sonra aşağıdaki niteleyiciler kabul edilir:
o Bir - işareti, dosyanın dosya içi yorumlar hariç başka hiçbir kural ayrıştırması olmadan yalnızca hariç tutma şablonlarından oluşması gerektiğini belirtir.
o Bir + işareti, dosyanın dosya içi yorumlar hariç başka hiçbir kural ayrıştırması olmadan yalnızca dahil etme şablonlarından oluşması gerektiğini belirtir.
o Bir C işareti, dosyanın CVS ile uyumlu bir şekilde okunması gerektiğini belirtmenin bir yoludur. Bu, 'n', 'w' ve '-' özelliklerini etkinleştirir, ancak liste temizleme simgesinin (!) de belirtilmesine izin verir. Hiçbir dosya adı sağlanmamışsa ".cvsignore" olduğu varsayılır.
o Bir e harfi, birleştirme dosyası adını aktarımdan hariç tutacaktır; örneğin "dir-merge,e .rules" kuralı "dir-merge .rules" ve "- .rules" kuralları gibidir.
o Bir n harfi, kuralların alt dizinler tarafından devralınmadığını belirtir.
o Bir w harfi, kuralların normal satır bölme yerine boşluklara göre kelime bölmeli olarak okunacağını belirtir. Bu aynı zamanda yorumları da kapatır. Not: öneki kuraldan ayıran boşluk özel olarak işlenir, bu nedenle "- foo + bar" iki kural olarak ayrıştırılır (önek ayrıştırmasının da kapatılmadığı varsayımıyla).
o Dosyadan okunan kuralların varsayılan olarak bu niteleyicinin ayarlanmış olması için "+" veya "-" kuralları (yukarıdaki) için olan niteleyicilerden herhangi birini belirtebilirsiniz (yararlı olmayacak olan ! niteleyicisi hariç). Örneğin, "merge,-/ .excl" kuralı .excl içeriğini mutlak yol hariç tutmaları olarak ele alırken, "dir-merge,s .filt" ve ":sC" kurallarının her biri dizin başına kurallarının yalnızca gönderen tarafta geçerli olmasını sağlayacaktır. Birleştirme kuralı etkilenecek tarafları belirtiyorsa (s veya r niteleyicisi veya her ikisi aracılığıyla), dosyadaki kurallar tarafları belirtmemelidir (bir niteleyici veya hide gibi bir kural öneki aracılığıyla).
Per-directory (dizin başına) kurallar, 'n' niteleyicisi kullanılmadığı sürece birleştirme dosyasının bulunduğu dizinin tüm alt dizinlerinde devralınır. Her alt dizinin kuralları, ebeveynlerinden devralınan dizin başına kuralların önüne eklenir, bu da en yeni kurallara devralınan kurallardan daha yüksek bir öncelik verir. Tüm dir-merge kuralları kümesi, birleştirme dosyasının belirtildiği yerde gruplandırılır, bu nedenle global kurallar listesinde daha önce belirtilen bir kural aracılığıyla dir-merge kurallarını geçersiz kılmak mümkündür. Liste temizleme kuralı ("!") dizin başına bir dosyadan okunduğunda, yalnızca geçerli birleştirme dosyası için devralınan kuralları temizler.
Bir dizin başına birleştirme dosyasındaki tek bir kuralın devralınmasını önlemenin bir başka yolu da onu öncü bir eğik çizgi ile sabitlemektir. Dizin başına birleştirme dosyasındaki sabitlenmiş kurallar birleştirme dosyasının dizinine göredir, bu nedenle "/foo" şablonu yalnızca dizin başına filtre dosyasının bulunduğu dizindeki "foo" dosyasıyla eşleşecektir.
Şöyle bir örnek filtre dosyasını --filter=". dosya" aracılığıyla belirtebilirsiniz:
merge /home/user/.global-filter
- *.gz dir-merge .rules
- *.[ch]
- *.o
- foo*
Bu, listenin başında /home/user/.global-filter dosyasının içeriğini birleştirecek ve ayrıca ".rules" dosya adını dizin başına bir filtre dosyasına dönüştürecektir. Dizin taramasının başlamasından önce okunan tüm kurallar global sabitleme kurallarını takip eder (yani öncü bir eğik çizgi aktarımın kökünde eşleşir).
Dizin başına bir birleştirme dosyası, ilk aktarım dizininin üst dizini olan bir yolla belirtilirse rsync, normal dizin taramasına başlamadan önce belirtilen dizin başına dosya için o başlangıç noktasından aktarım dizinine kadar olan tüm üst dizinleri tarayacaktır. Örneğin, yaygın bir filtre şudur (bkz. -F):
--filter=': /.rsync-filter'
Bu kural rsync'e, aktarılan dizinlerde gönderilen dosyaların normal dizin taramasından önce, aktarımın üst dizininden başlayarak köke kadar olan tüm dizinlerde .rsync-filter dosyasını taramasını söyler. (Not: bir rsync daemon için kök her zaman modülün "path" ayarı ile aynıdır.)
Dizin başına dosyalar için bu ön taramanın bazı örnekleri:
rsync -avF /src/yol/ /dest/dizin rsync -av --filter=': ../../.rsync-filter' /src/yol/ /dest/dizin rsync -av --filter=': .rsync-filter' /src/yol/ /dest/dizin
Yukarıdaki ilk iki komut, normal tarama "/src/yol" ve alt dizinlerinde dosyayı aramaya başlamadan önce "/" ve "/src" dizinlerinde ".rsync-filter" dosyasını arayacaktır. Son komut ise üst dizin taramasını atlar ve yalnızca aktarımın bir parçası olan her dizinde ".rsync-filter" dosyalarını arar.
Biçimlerinize bir ".cvsignore" dosyasının içeriğini dahil etmek istiyorsanız, .cvsignore dosyasının dizin birleştirmesini oluşturan ancak CVS ile uyumlu bir şekilde ayrıştırılan ":C" kuralını kullanmalısınız. Bunu, filtre kurallarınızda ":C" kuralını istediğiniz yere koyarak, dizin başına .cvsignore dosyasının --cvs-exclude (-C) seçeneğiyle eklenmesinin kurallarınızda nereye yerleştirileceğini etkilemek için kullanabilirsiniz. Bu kural olmadan rsync, .cvsignore dosyası için dizin birleştirme kuralını tüm kurallarınızın sonuna ekleyecektir (ona komut satırı kurallarınızdan daha düşük bir öncelik vererek). Örneğin:
cat <<EOT | rsync -avC --filter='. -' a/ b
- foo.o :C
- .old EOT rsync -avC --include=foo.o -f :C --exclude='.old' a/ b
Yukarıdaki her iki rsync komutu da aynıdır. Her biri, dizin başına tüm .cvsignore kurallarını listenin sonu yerine ortasında birleştirecektir. Bu, dizine özgü kurallarının tüm kurallarınıza tabi olmak yerine :C'yi takip eden kuralların yerine geçmesini sağlar. Diğer CVS hariç tutma kurallarını (yani varsayılan hariç tutmalar listesi, $HOME/.cvsignore içeriği ve $CVSIGNORE değeri) etkilemek için -C komut satırı seçeneğini atlamalı ve bunun yerine filtre kurallarınıza bir "-C" kuralı eklemelisiniz; örneğin --filter=-C.
LİSTE TEMİZLEME FİLTRE KURALI Filtre kurallarında "!" kullanarak mevcut dahil etme/hariç tutma listesini temizleyebilirsiniz (yukarıdaki FILTER RULES bölümünde tanıtıldığı gibi). "Mevcut" liste ya global kurallar listesidir (eğer kural filtre seçenekleri ayrıştırılırken karşılaşıldıysa) ya da dizin başına kurallar kümesidir (bunlar kendi alt listesinde devralınır, bu nedenle bir alt dizin bunu ebeveynin kurallarını temizlemek için kullanabilir).
DAHİL ETME/HARİÇ TUTMA ŞABLONLARINI SABİTLEME Daha önce belirtildiği gibi, global dahil etme/hariç tutma şablonları "aktarımın köküne" sabitlenir (birleştirme dosyasının dizinine sabitlenen dizin başına şablonların aksine). Aktarımı gönderenden alıcıya gönderilen adların bir alt ağacı olarak düşünürseniz, aktarım kökü ağacın hedef dizinde çoğaltılmaya başlandığı yerdir. Bu kök, bir / ile başlayan şablonların nerede eşleşeceğini yönetir.
Eşleştirme aktarım köküne göre yapıldığından, kaynak yoldaki sondaki eğik çizgiyi değiştirmek veya --relative seçeneğini kullanıp kullanmamanız eşleştirmenizde kullanmanız gereken yolu etkiler (hedef konakta dosya ağacının ne kadarının çoğaltıldığını değiştirmenin yanı sıra). Aşağıdaki örnekler bunu göstermektedir.
Sırasıyla mutlak yolları /home/ben/foo/bar ve /home/sen/bar/baz olan iki kaynak dosyayı eşleştirmek istediğimizi varsayalım. 2 kaynaklı bir aktarım için çeşitli komut seçeneklerinin nasıl farklılık gösterdiği aşağıda gösterilmiştir:
Örnek komut: rsync -a /home/ben /home/sen /dest +/- şablonu: /ben/foo/bar +/- şablonu: /sen/bar/baz Hedef dosya: /dest/ben/foo/bar Hedef dosya: /dest/sen/bar/baz
Örnek komut: rsync -a /home/ben/ /home/sen/ /dest +/- şablonu: /foo/bar ("ben" kelimesinin eksik olduğuna dikkat edin) +/- şablonu: /bar/baz ("sen" kelimesinin eksik olduğuna dikkat edin) Hedef dosya: /dest/foo/bar Hedef dosya: /dest/bar/baz
Örnek komut: rsync -a --relative /home/ben/ /home/sen /dest +/- şablonu: /home/ben/foo/bar (tam yola dikkat edin) +/- şablonu: /home/sen/bar/baz (aynı şekilde) Hedef dosya: /dest/home/ben/foo/bar Hedef dosya: /dest/home/sen/bar/baz
Örnek komut: cd /home; rsync -a --relative me/foo you/ /dest +/- şablonu: /me/foo/bar (belirtilen yoldan başlar) +/- şablonu: /you/bar/baz (aynı şekilde) Hedef dosya: /dest/me/foo/bar Hedef dosya: /dest/you/bar/baz
Hangi adı filtrelemeniz gerektiğini görmenin en kolay yolu, --verbose seçeneğini kullanırken çıktıya bakmak ve adın önüne bir / koymaktır (herhangi bir dosyayı kopyalamaya henüz hazır değilseniz --dry-run seçeneğini kullanın).
DİZİN BAŞINA KURALLAR AND SİLME Bir silme seçeneği olmadığında dizin başına kurallar yalnızca gönderen tarafta geçerlidir, bu nedenle birleştirme dosyalarının kendilerini aktarımı etkilemeden hariç tutabilirsiniz. Bunu kolaylaştirmek için 'e' niteleyicisi bu hariç tutmayı sizin için ekler, bu iki eşdeğer komutta görülebilir:
rsync -av --filter=': .excl' --exclude=.excl konak:src/dir /dest rsync -av --filter=':e .excl' konak:src/dir /dest
Ancak alıcı tarafta bir silme işlemi yapmak istiyorsanız VE bazı dosyaların silinmekten hariç tutulmasını istiyorsanız, alıcı tarafın hangi dosyaların hariç tutulacağını bildiğinden emin olmanız gerekir. En kolay yol, dizin başına birleştirme dosyalarını aktarıma dahil etmek ve --delete-after seçeneğini kullanmaktır; çünkü bu, alıcı tarafın herhangi bir şeyi silmeye çalışmadan önce gönderen tarafla aynı hariç tutma kurallarını almasını sağlar:
rsync -avF --delete-after konak:src/dir /dest
Ancak birleştirme dosyaları aktarımın bir parçası değilse, bazı global hariç tutma kuralları (yani komut satırında belirtilenler) belirtmeniz gerekir veya alıcı tarafta kendi dizin başına birleştirme dosyalarınızı bulundurmanız gerekir. İlkinin bir örneği şudur (uzak .rules dosyalarının kendilerini hariç tuttuğunu varsayalım):
rsync -av --filter=': .rules' --filter='. /my/extra.rules' --delete konak:src/dir /dest
Yukarıdaki örnekte extra.rules dosyası aktarımın her iki tarafını da etkileyebilir, ancak (gönderen tarafta) kurallar, dizin başına birleştirme kuralından sonra belirtildikleri için .rules dosyalarından birleştirilen kurallara tabidir.
Son bir örnekte, uzak taraf .rsync-filter dosyalarını aktarımdan hariç tutmaktadır, ancak biz alıcı tarafta neyin silineceğini kontrol etmek için kendi .rsync-filter dosyalarımızı kullanmak istiyoruz. Bunu yapmak için dizin başına birleştirme dosyalarını özel olarak hariç tutmalı (böylece silinmezler) ve ardından nelerin silinmeyeceğini kontrol etmek için yerel dosyalara kurallar koymalıyız. Şu komutlardan biri gibi:
rsync -av --filter=':e /.rsync-filter' --delete konak:src/dir /dest rsync -avFF --delete konak:src/dir /dest
Transfer Rules
Gönderen ve (silme sırasında) alıcı tarafta dosya listesini oluşturan özyinelemeli dosya taramalarını etkileyen FİLTRE KURALLARI (FILTER RULES) haricinde bir de aktarım kuralları vardır. Bu kurallar, bir hariç tutma filtresi kuralının yan etkileri olmaksızın, oluşturucunun (generator) hangi dosyaların aktarılması gerektiğine karar vermesini etkiler. Aktarım kuralları yalnızca dosyaları etkiler, dizinleri asla etkilemez.
Bir aktarım kuralı gönderenin (ve alıcının) dosya listesine neyin gireceğini etkilemediğinden, alıcı tarafta hangi dosyaların silineceği üzerinde hiçbir etkisi olamaz. Örneğin, "foo" dosyası gönderenin listesinde varsa ancak boyutu nedeniyle bir aktarım kuralı nedeniyle atlanmışsa, alıcı taraf dosyayı talep etmez. Ancak dosya listesindeki varlığı, bir silme geçişinin alıcı taraftaki "foo" adlı eşleşen bir dosyayı kaldırmayacağı anlamına gelir. Öte yandan, dosyanın sunucu tarafında hariç tutulması (gizlenmesi - hide), dosyayı sunucunun dosya listesinin dışında bırakır ve alıcı tarafında bir hariç tutma (koruma - protect) kuralı olmaması durumunda alıcı, silme talep edilmişse "foo" adlı eşleşen dosyayı kaldıracaktır.
Dosyalar hala gönderenin dosya listesinde olduğundan, --prune-empty-dirs seçeneği, yalnızca aktarım kuralları tarafından atlanmış dosyaları içerse bile bir dizini boş olarak değerlendirmeyecektir.
Benzer şekilde, bir aktarım kuralının alıcı tarafta hangi dosyaların silineceği üzerinde fazladan bir etkisi yoktur, bu nedenle aktarım için maksimum dosya boyutu sınırının belirlenmesi büyük dosyaların silinmesini engellemez.
Aktarım kurallarının örnekleri arasında varsayılan "hızlı kontrol" (quick check) algoritması (boyut ve değişiklik zamanını karşılaştıran), --update seçeneği, --max-size seçeneği, --ignore-non-existing seçeneği ve diğer birkaç seçenek yer alır.
Batch Mode
Toplu iş modu (batch mode), aynı güncelleme kümesini birçok özdeş sisteme uygulamak için kullanılabilir. Birçok konakta çoğaltılmış bir ağacınız olduğunu varsayalım. Şimdi bu kaynak ağaçta bazı değişiklikler yapıldığını ve bu değişikliklerin diğer konaklara yayılması gerektiğini düşünelim. Bunu toplu iş modunu kullanarak yapmak için rsync, kaynak ağaçta yapılan değişiklikleri hedef ağaçlardan birine uygulamak üzere write-batch seçeneğiyle çalıştırılır. write-batch seçeneği, rsync istemcisinin bu işlemi diğer özdeş hedef ağaçlarına karşı tekrarlamak için gereken tüm bilgileri bir "toplu iş dosyasında" (batch file) saklamasını sağlar.
Toplu iş dosyasının bir kez oluşturulması, birden fazla hedef ağacı güncellerken dosya durumunu, sağlama toplamını ve veri bloğu üretimini birden fazla kez gerçekleştirme zorunluluğunu ortadan kaldırır. Çok noktaya yayın (multicast) aktarım protokolleri, toplu güncelleme dosyalarını aynı anda birçok konağa paralel olarak aktarmak için kullanılabilir; böylece aynı veriyi her bir konağa ayrı ayrı göndermek gerekmez.
Kaydedilen değişiklikleri başka bir hedef ağaca uygulamak için rsync'i read-batch seçeneğiyle, aynı toplu iş dosyasının adını ve hedef ağacı belirtekir. Rsync, toplu iş dosyasında saklanan bilgileri kullanarak hedef ağacı günceller.
Kolaylık sağlamak amacıyla, write-batch seçeneği kullanıldığında bir betik dosyası da oluşturulur: Bu dosya, sonuna ".sh" eklenmiş toplu iş dosyasıyla aynı ada sahip olacaktır. Bu betik dosyası, ilişkili toplu iş dosyasını kullanarak bir hedef ağacı güncellemek için uygun bir komut satırı içerir. Bu dosya, bir Bourne (veya Bourne benzeri) kabuk kullanılarak çalıştırılabilir ve isteğe bağlı olarak alternatif bir hedef ağaç yol adı iletilebilir, bu yol daha sonra orijinal hedef yolunun yerine kullanılır. Bu özellik, geçerli konaktaki hedef ağaç yolu toplu iş dosyasını oluşturmak için kullanılandan farklı olduğunda yararlıdır.
Örnekler:
$ rsync --write-batch=foo -a konak:/source/dir/ /adest/dir/ $ scp foo* uzak_konak: $ ssh uzak_konak ./foo.sh /bdest/dir/
$ rsync --write-batch=foo -a /source/dir/ /adest/dir/ $ ssh uzak_konak rsync --read-batch=- -a /bdest/dir/ <foo
Bu örneklerde rsync, /adest/dir/ dizinini /source/dir/ dizininden güncellemek için kullanılır ve bu işlemi tekrarlayacak bilgiler "foo" ve "foo.sh" dosyalarında saklanır. "uzak_konak" adlı konak daha sonra /bdest/dir dizinine giden toplu verilerle güncellenir. İki örnek arasındaki farklar, toplu işlerle çalışırken sahip olduğunuz esnekliğin bir kısmını ortaya koymaktadır:
o İlk örnek, ilk kopyalamanın yerel olmak zorunda olmadığını gösterir -- isterseniz uzak bir konağa/konaktan uzak kabuk sözdizimini veya rsync daemon sözdizimini kullanarak veri gönderebilir veya çekebilirsiniz.
o İlk örnek, uzak konakta read-batch komutunu çalıştırırken doğru rsync seçeneklerini elde etmek için oluşturulan "foo.sh" dosyasını kullanır.
o İkinci örnek, toplu iş verilerini standart girdi üzerinden okur, böylece toplu iş dosyasının önce uzak makineye kopyalanması gerekmez. Bu örnek, değiştirilmiş bir --read-batch seçeneği kullanması gerektiği için foo.sh betiğini atlar, ancak isterseniz betik dosyasını düzenleyerek kullanabilirsiniz (standart girdiyi kullanmaya çalışan --exclude-from=- gibi başka hiçbir seçeneğin olmadığından emin olmanız yeterlidir).
Uyarılar:
read-batch seçeneği, güncellediği hedef ağacın, toplu güncelleme dosyası kümesini oluşturmak için kullanılan hedef ağaçla aynı olmasını bekler. Hedef ağaçlar arasında bir farkla karşılaşıldığında, güncelleme bir uyarıyla iptal edilebilir (dosya zaten güncel görünüyorsa) veya dosya güncellemesi denenebilir ve ardından dosya doğrulaması başarısız olursa güncelleme bir hatayla iptal edilebilir. Bu, komut kesintiye uğradıysa bir read-batch işlemini yeniden çalıştırmanın güvenli olması gerektiği anlamına gelir. Dosyanın boyutuna ve tarihine bakılmaksızın toplu güncellemenin her zaman denenmesini zorlamak istiyorsanız, (toplu işi okurken) -I seçeneğini kullanın. Bir hata oluşursa, hedef ağaç muhtemelen kısmen güncellenmiş bir durumda kalacaktır. Bu durumda rsync, hedef ağacı düzeltmek için normal (toplu iş olmayan) çalışma modunda kullanılabilir.
Tüm hedeflerde kullanılan rsync sürümü, toplu iş dosyasını oluşturmak için kullanılandan en azından aynı derecede yeni olmalıdır. Toplu iş dosyasındaki protokol sürümü, toplu işi okuyan rsync'in işleyemeyeceği kadar yeniyse rsync bir hatayla sonlanacaktır. Oluşturan rsync'in daha eski bir rsync'in anlayabileceği bir toplu iş dosyası üretmesini sağlamanın bir yolu için --protocol seçeneğine de bakınız. (Toplu iş dosyası biçiminin 2.6.3 sürümünde değiştiğini, bu nedenle bundan daha eski sürümleri daha yeni sürümlerle karıştırmanın çalışmayacağını unutmayınız.)
Bir toplu iş dosyasını okurken rsync, bunları toplu işi yazan komutla aynı şekilde ayarlamadıysanız belirli seçeneklerin değerini toplu iş dosyasındaki verilerle eşleşmeye zorlayacaktır. Diğer seçenekler değiştirilebilir (ve değiştirilmelidir). Örneğin --write-batch seçeneği --read-batch olarak değişir, --files-from bırakılır ve --delete seçeneklerinden biri belirtilmedikçe --filter / --include / --exclude seçeneklerine gerek kalmaz.
BATCH.sh dosyasını oluşturan kod, herhangi bir filtre/dahil etme/hariç tutma seçeneğini kabuk betiği dosyasına bir "here" belgesi olarak eklenen tek bir listeye dönüştürür. Gelişmiş bir kullanıcı, --delete tarafından nelerin silineceğinde bir değişiklik yapılması istenirse hariç tutma listesini değiştirmek için bunu kullanabilir. Normal bir kullanıcı bu ayrıntıyı göz ardı edebilir ve kabuk betiğini batırılmış veriler için uygun --read-batch komutunu çalıştırmanın kolay bir yolu olarak kullanabilir.
Rsync'teki orijinal toplu iş modu "rsync+" tabanlıydı, ancak en son sürüm yeni bir uygulama kullanmaktadır.
Symbolic Links
Rsync kaynak dizinde bir sembolik bağlantıyla karşılaştığında üç temel davranış mümkündür.
Varsayılan olarak, sembolik bağlantılar hiç aktarılmaz. Mevcut olan tüm sembolik bağlantılar için "skipping non-regular" (normal olmayan dosya atlanıyor) mesajı verilir.
Eğer --links belirtilirse, sembolik bağlantılar aktarıma eklenir (gürültülü bir şekilde göz ardı edilmek yerine) ve varsayılan işlem bunları hedefte aynı hedefi gösterecek şekilde yeniden oluşturmaktır. --archive seçeneğinin --links seçeneğini içerdiğini unutmayınız.
Eğer --copy-links belirtilirse sembolik bağlantılar, kendileri yerine işaret ettikleri hedefin kopyalanmasıyla "çözümlenir" (collapsed).
Rsync ayrıca "güvenli" (safe) ve "güvensiz" (unsafe) sembolik bağlantıları ayırt edebilir. Bunun kullanılabileceği bir örnek, kopyalanan rsync modülünün sitenin genel bölümündeki /etc/passwd dosyasına sembolik bağlantılar içermemesini sağlamak isteyen bir web sitesi aynasıdır. --copy-unsafe-links seçeneğinin kullanılması, tüm güvensiz bağlantıların hedefte işaret ettikleri dosya olarak kopyalanmasına neden olur. --safe-links seçeneğinin kullanılması güvensiz bağlantıların alıcı tarafından atlanmasını sağlar. (--safe-links seçeneğinin herhangi bir etkiye sahip olması için --links seçeneğini belirtmeniz veya zımnen içermeniz gerektiğini unutmayınız.)
Sembolik bağlantılar, mutlak sembolik bağlantılarsa (şununla başlarsa: /), boşlarsa veya aktarımın en üstünden yukarı çıkmak için yeterli miktarda ".." bileşeni içeriyorlarsa güvensiz kabul edilir.
Aşağıda sembolik bağlantı seçeneklerinin nasıl yorumlandığının bir özeti yer almaktadır. Liste öncelik sırasına göredir, bu nedenle seçenek kombinasyonunuz belirtilmemişse, seçeneklerinizin tam bir alt kümesi olan ilk satırı kullanın:
--copy-links Tüm sembolik bağlantıları normal dosya ve dizinlere dönüştürür (diğer seçeneklerin etkilemesi için aktarımda hiçbir sembolik bağlantı bırakmaz).
--copy-dirlinks Yalnızca dizinlere olan sembolik bağlantıları gerçek dizinlere dönüştürür, diğer tüm sembolik bağlantıları aşağıda açıklandığı gibi işlenmek üzere bırakır.
--links --copy-unsafe-links Tüm güvensiz sembolik bağlantıları dosyalara dönüştürür ve tüm güvenli sembolik bağlantıları oluşturur.
--copy-unsafe-links Tüm güvensiz sembolik bağlantıları dosyalara dönüştürür, tüm güvenli sembolik bağlantıları gürültülü bir şekilde atlar.
--links --safe-links Alıcı, aktarımda bulunan güvensiz sembolik bağlantıları oluşturmayı atlar ve güvenli olanları oluşturur.
--links Tüm sembolik bağlantıları oluşturur.
--munge-links seçeneğinin etkisi için o seçeneğin bölümündeki açıklamaya bakınız.
--keep-dirlinks seçeneğinin aktarımdaki sembolik bağlantıları etkilemediğini, bunun yerine rsync'in alıcı tarafta halihazırda var olan bir dizine giden sembolik bağlantıya nasıl davranacağını etkilediğini unutmayınız. Bir uyarı için o seçeneğin bölümüne bakınız.
Diagnostics
Rsync bazen biraz şifreli görünebilecek hata mesajları üretebilir. En çok kafa karışıklığına yol açan mesaj "protocol version mismatch -- is your shell clean?" (protokol sürümü uyumsuzluğu -- kabuğunuz temiz mi?) mesajıdır.
Bu mesaja genellikle başlangıç betiklerinizin veya uzak kabuk aracınızın rsync'in aktarım için kullandığı veri akışında istenmeyen çöpler üretmesi neden olur. Bu sorunu teşhis etmenin yolu uzak kabuğunuzu şu şekilde çalıştırmaktır:
ssh uzak_konak /bin/true > out.dat
ardından out.dat dosyasına bakın. Her şey düzgün çalışıyorsa out.dat sıfır uzunlukta bir dosya olmalıdır. Rsync'ten yukarıdaki hatayı alıyorsanız, muhtemelen out.dat dosyasının bazı metin veya veriler içerdiğini göreceiniz. İçeriğe bakın ve bunu neyin ürettiğini bulmaya çalışın. En yaygın neden, etkileşimli olmayan oturum açma işlemleri için çıktı deyimleri içeren, yanlış yapılandırılmış kabuk başlangıç betikleridir (örneğin .cshrc veya .profile).
Filtre şablonlarında hata ayıklamakta sorun yaşıyorsanız -vv seçeneğini belirtmeyi deneyin. Bu ayrıntı düzeyinde rsync, her bir dosyanın neden dahil edildiğini veya hariç tutulduğunu gösterecektir.
Exit Values
o 0 - Başarılı
o 1 - Sözdizimi veya kullanım hatası
o 2 - Protokol uyumsuzluğu
o 3 - Girdi/çıktı dosyalarını, dizinlerini seçerken hata
o
o 4 - Talep edilen eylem desteklenmiyor. Şunlardan biri:
bunları destekleyemeyen bir platformda 64-bitlik dosyalar üzerinde işlem yapılmaya çalışıldı
o istemci tarafından desteklenen ancak sunucu tarafından desteklenmeyen bir seçenek belirtildi
o 5 - İstemci-sunucu protokolü başlatılırken hata
o 6 - Daemon günlük dosyasına veri ekleyemedi (append)
o 10 - Soket G/Ç hatası
o 11 - Dosya G/Ç hatası
o 12 - Rsync protokolü veri akışında hata
o 13 - Program tanılama hataları
o 14 - IPC kodunda hata
o 20 - SIGUSR1 veya SIGINT sinyali alındı
o 21 - waitpid() tarafından döndürülen bazı hatalar
o 22 - Çekirdek bellek arabellekleri ayrılırken hata
o 23 - Hata nedeniyle kısmi aktarım
o 24 - Kaybolan kaynak dosyalar nedeniyle kısmi aktarım
o 25 - --max-delete sınırı silme işlemlerini durdurdu
o 30 - Veri gönderme/almada zaman aşımı
o 35 - Daemon bağlantısı beklenirken zaman aşımı
Environment Variables
CVSIGNORE
CVSIGNORE ortam değişkeni, .cvsignore dosyalarındaki tüm yoksayma şablonlarını tamamlar. Daha fazla ayrıntı için --cvs-exclude seçeneğine bakınız.
RSYNC_ICONV
Bu ortam değişkenini kullanarak varsayılan bir --iconv ayarı belirtin. İlk olarak 3.0.0 sürümünde desteklenmiştir.
RSYNC_OLD_ARGS
Varsayılan olarak --old-args seçeneğinin etkinleştirilmesini istiyorsanız "1", tekrarlanan seçenek durumunda etkinleştirilmesini istiyorsanız "2" (veya daha fazlasını), varsayılan olarak devre dışı bırakıldığından emin olmak istiyorsanız "0" belirtin. Bu ortam değişkeni sıfır dışı bir değere ayarlandığında, RSYNC_PROTECT_ARGS değişkeninin yerine geçer.
Komut satırında --old-args, --no-old-args veya --secluded-args belirtilmişse bu değişken göz ardı edilir.
İlk olarak 3.2.4 sürümünde desteklenmiştir.
RSYNC_PROTECT_ARGS
Varsayılan olarak --secluded-args seçeneğinin etkinleştirilmesini istiyorsanız sıfır dışı sayısal bir değer, varsayılan olarak devre dışı bırakıldığından emin olmak istiyorsanız sıfır değeri belirtin.
Komut satırında --secluded-args, --no-secluded-args veya --old-args belirtilmişse bu değişken göz ardı edilir.
İlk olarak 3.1.0 sürümünde desteklenmiştir. 3.2.4 sürümünden başlayarak, RSYNC_OLD_ARGS sıfır dışı bir değere ayarlanmışsa bu değişken göz ardı edilir.
RSYNC_RSH
Bu ortam değişkeni, rsync için aktarım olarak kullanılan varsayılan kabuğu geçersiz kılmanıza olanak tanır. Komut adından sonra komut satırı seçeneklerine, tıpkı --rsh (-e) seçeneğinde olduğu gibi izin verilir.
RSYNC_PROXY
Bu ortam değişkeni, bir rsync daemon'ına bağlanırken rsync istemcinizi bir web proxy kullanmaya yönlendirmenizi sağlar. RSYNC_PROXY değişkenini bir konak_adı:port çiftine ayarlamalısınız.
RSYNC_PASSWORD Bu ortam değişkeni, şifre sorma istemini ortadan kaldıran bir rsync daemon bağlantısı için şifreyi ayarlamanıza olanak tanır. Bunun ssh gibi uzak bir kabuk aktarımına şifre sağlamadığını unutmayınız (bunun nasıl yapılacağı için ilgili belgelere danışın).
USER veya LOGNAME
USER veya LOGNAME ortam değişkenleri, bir rsync daemon'ına gönderilen varsayılan kullanıcı adını belirlemek için kullanılır. İkisi de ayarlanmamışsa, kullanıcı adı varsayılan olarak "nobody" olur. Her ikisi de ayarlanmışsa USER önceliklidir.
RSYNC_PARTIAL_DIR
Bu ortam değişkeni, kısmi aktarımların etkinleştirildiğini ima etmeden, bir --partial aktarımı için kullanılacak dizini belirtir. Tam ayrıntılar için --partial-dir seçeneğine bakınız.
RSYNC_COMPRESS_LIST
Bu ortam değişkeni, alternatif bir sıra veya daraltılmış bir ad listesi belirterek sıkıştırma algoritması müzakeresini özelleştirmenize olanak tanır. Kullanılabilir sıkıştırma adlarını görmek için rsync --version komutunu kullanın. Tam ayrıntılar için --compress seçeneğine bakınız.
RSYNC_CHECKSUM_LIST
Bu ortam değişkeni, alternatif bir sıra veya daraltılmış bir ad listesi belirterek sağlama toplamı algoritması müzakeresini özelleştirmenize olanak tanır. Kullanılabilir sağlama toplamı adlarını görmek için rsync --version komutunu kullanın. Tam ayrıntılar için --checksum-choice seçeneğine bakınız.
RSYNC_MAX_ALLOC
Bu ortam değişkeni, sanki --max-alloc seçeneğini kullanmışsınız gibi bir tahsis maksimumu ayarlar.
RSYNC_PORT Bu ortam değişkeni rsync tarafından okunmaz, bunun yerine rsync uzak kabuğu bir daemon bağlantısıyla birleşik olarak çalıştırırken kendi alt ortamında ayarlanır. Bu, rsync-ssl gibi bir betiğin, kullanıcının komut satırında belirttiği port numarasını bilmesini sağlar.
HOME Bu ortam değişkeni, kullanıcının varsayılan .cvsignore dosyasını bulmak için kullanılır.
RSYNC_CONNECT_PROG Bu ortam değişkeni, esas olarak hata ayıklama kurulumlarında bir daemon bağlantısı kurarken kullanılacak programı ayarlamak için kullanılır. Tam ayrıntılar için CONNECTING TO AN RSYNC DAEMON (BİR RSYNC DAEMON'INA BAĞLANMA) bölümüne bakınız.
RSYNC_SHELL
Bu ortam değişkeni, esas olarak hata ayıklama kurulumlarında RSYNC_CONNECT_PROG tarafından belirtilen programı çalıştırmak için kullanılacak programı ayarlamak için kullanılır. Tam ayrıntılar için CONNECTING TO AN RSYNC DAEMON (BİR RSYNC DAEMON'INA BAĞLANMA) bölümüne bakınız.
Files
/etc/rsyncd.conf veya rsyncd.conf
See Also
rsync-ssl(1), rsyncd.conf(5), rrsync(1)
Bugs
o Zamanlar *nix time_t değerleri olarak aktarılır.
o FAT dosya sistemlerine aktarılırken rsync değiştirilmemiş dosyaları yeniden senkronize edebilir. --modify-window seçeneğindeki açıklamalara bakınız.
o Dosya izinleri, aygıtlar vb. yerel sayısal değerler olarak aktarılır.
o Ayrıca --delete seçeneğiyle ilgili açıklamalara bakınız.
Lütfen hataları bildirin! https://rsync.samba.org/ adresindeki web sitesine bakınız.
Version
Bu kılavuz sayfası rsync'in 3.4.1 sürümü için günceldir.
Internal Options
--server ve --sender seçenekleri rsync tarafından dahili olarak kullanılır ve normal koşullar altında bir kullanıcı tarafından asla yazılmamalıdır. Yalnızca bir rsync komutunu çalıştırabilen bir giriş kurarken olduğu gibi bazı senaryolarda bu seçeneklerin bilinmesi gerekebilir. Örneğin, rsync dağıtımının support dizininde, kısıtlı bir ssh girişiyle kullanılabilen rrsync (restricted rsync - kısıtlı rsync) adında örnek bir betik bulunur.
Credits
Rsync, GNU Genel Kamu Lisansı altında dağıtılmaktadır. Ayrıntılar için COPYING dosyasına bakınız.
https://rsync.samba.org/ adresinde bir rsync web sitesi mevcuttur. Site, bu kılavuz sayfasında yanıtlanmayan soruları kapsayabilecek bir FAQ-O-Matic içerir.
Rsync github projesi https://github.com/RsyncProject/rsync adresindedir.
Bu programı beğendiyseniz sizden haber almaktan memnuniyet duyarız. Lütfen rsync@lists.samba.org adresindeki e-posta listesi ile iletişime geçin.
Bu program, Jean-loup Gailly ve Mark Adler tarafından yazılan mükemmel zlib sıkıştırma kütüphanesini kullanmaktadır.
Thanks
Şu isimlere özel teşekkürlerimizi sunarız: John Van Essen, Matt McCutchen, Wesley W. Terpstra, David Dykstra, Jos Backus, Sebastian Krahmer, Martin Pool ve aramızdan ayrılan ama unutulmayan yoldaşımız J.W. Schultz.
Ayrıca Richard Brent, Brendan Mackay, Bill Waite, Stephen Rothwell ve David Bell'e de teşekkür ederiz. Bazı kişileri atlamış olabilirim, eğer öyleyse özür dilerim.
Author
Rsync başlangıçta Andrew Tridgell ve Paul Mackerras tarafından yazılmıştır. Dünyanın dört bir yanından birçok insan onu sürdürmeye ve geliştirmeye yardımcı olmuştur.
Destek ve geliştirme için e-posta listelerine https://lists.samba.org/ adresinden ulaşılabilir.
rsync 3.4.1 15 Jan 2025 rsync(1)