rsync
'ı ne kadar çok kullanırsam, dosya aktarımının İsviçre çakısı olduğunu o kadar çok anlarım. Çok fazla seçenek var. Geçenlerde --remove-source-files
ve kopyalandığında kaynaktan bir dosyayı siler, bu da programı kopyalamak yerine biraz daha hareket ettirir. :)
En sevdiğiniz küçük rsync ipuçları ve püf noktaları nelerdir?
Çok sayıda dosyayı senkronize etmeniz gerekiyorsa rsync sürüm 3'ü kullanmayı deneyin! V3, dosya listesini aşamalı olarak oluşturur ve çok daha hızlıdır ve sürüm 2'den daha az bellek kullanır.
Platformunuza bağlı olarak bu oldukça fark yaratabilir. OSX 2.6.3 sürümünde bir saatten fazla sürecek veya 5 milyon dosyadan oluşan bir dizin oluşturmaya çalışırken çökecek. Derleme 3.0.2 sürümü derhal kopyalamaya başladı.
--link-dest
alandan tasarruf sağlayan anlık görüntü tabanlı yedeklemeler oluşturmak için, yedeklenen verilerin birden fazla tam kopyasına sahip olduğunuz (her yedekleme çalışması için bir tane) göründüğünüz, ancak çalışmalar arasında değişiklik yapmayan dosyalar zor Yer tasarrufu sağlayan yeni kopyalar oluşturmak yerine.
(aslında, hala rysnc
- ardından -cp -al
aynı şeyi başaran yöntem, bkz. http://www.mikerubel.org/computers/rsync_snapshots/ eski ama yine de çok iyi bir düşüş için teknikler ve ilgili konular)
Bu tekniğin en büyük dezavantajı, bir dosya disk hatası nedeniyle bozuksa, o dosyaya bağlanan tüm anlık görüntülerde bozuk olduğu, ancak buna karşı iyi derecede koruyacak çevrimdışı yedeklemelerin de olmasıdır. Dikkat edilmesi gereken diğer bir şey, dosya sisteminizde yeterli sayıda inode bulunması veya disk alanınız bitmeden önce bunlardan kaçmanızdır (ext2/3 varsayılanlarıyla hiç bir sorun yaşamadım).
Ayrıca, çok yararlı --dry-run
biraz sağlıklı paranoya için, özellikle de --delete*
seçenek.
Yavaş bir bağlantı üzerinden bazı büyük dosyaları içeren bir web sitesini güncellemeniz gerekiyorsa, küçük dosyaları şu şekilde aktarabilirsiniz:
rsync -a --max-boyut = 100K/var/www/orada:/var/www /
büyük dosyalar için bunu yapın:
rsync -a --min-size = 100K --blimlim = 100/var/www/orada:/var/www /
rsync, web siteleri için kullanışlı birçok seçeneğe sahiptir. Ne yazık ki, eşzamanlı güncellemeleri tespit etmek için yerleşik bir yolu yoktur, bu nedenle büyük dosyaların çakışmasını önlemek için cron komut dosyalarına mantık eklemeniz gerekir.
Bir dizindeki dosyaların küçük bir alt kümesini başka bir konuma eşzamanlı tutmaya çalışırken --existing seçeneğini kullanıyorum.
--rsh
benim.
Ssh üzerindeki şifreyi daha hızlı bir şeye değiştirmek için kullandım (--rsh="ssh -c arcfour"
) ayrıca ssh
s zincirini ayarlamak için (ssh-agent
) doğrudan konuşamayan ana bilgisayarlar arasında dosya senkronize etmek için. (rsync -av --rsh="ssh -TA [email protected] ssh -TA -l userB" /tmp/foobar/ hostB:/tmp/foobar/
).
--time-limit
Bu seçenek kullanıldığında, rsync T dakika sonra duracak ve çıkacaktır. Ben bu seçenek gece (meşgul olmayan saatler) büyük miktarda veri rsyncing ve sonra insanların gündüzleri (meşgul saat), ağ kullanmaya başlama zamanı geldiğinde durdurma yararlı olduğunu düşünüyorum.
--stop-at=y-m-dTh:m
Bu seçenek rsync'i hangi zamanda durduracağınızı belirlemenizi sağlar.
Batch Mode
Toplu mod, aynı güncelleştirme kümesini birçok özdeş sisteme uygulamak için kullanılabilir.
Yavaş çalışan bir rsync'in ne kadar ilerlediğini merak ediyorsanız ve dosyaları aktarıldıkça listelemek için -v kullanmadıysanız, hangi dosyaları açtığını öğrenebilirsiniz:
ls -l /proc/$(pidof rsync)/fd/*
/ proc olan bir sistemde
Örneğin. Uzak sistemde bir sürü alan kalmış gibi görünse de, rsync benim için asıldı. Bu hile, hatırlamadığım ve diğer tarafa sığmayan beklenmedik büyüklükte dosyayı bulmama yardımcı oldu.
Ayrıca bana biraz daha ilginç bilgiler verdi - görünüşte vazgeçildi, çünkü kırık bir soket bağlantısı da vardı:
/proc/22954/fd/4: broken symbolic link to `socket:[2387837]'
--archive
, yedekleme benzeri işler için standart bir seçimdir (varsayılan olmasa da), bu da kaynak dosyalardaki meta verilerin (izinler, sahiplik vb.) çoğunun kopyalanmasını sağlar.
Ancak, bunu kullanmak istemiyorsanız, çoğu zaman --times
, dosyaların değişiklik zamanları boyunca kopyalanır. Bu, bir sonraki rsync'i çalıştırır (tekrar tekrar yaptığınızı varsayarak) çok daha hızlıdır, çünkü rsync değişiklik sürelerini karşılaştırır ve değişmediyse dosyayı atlar. Şaşırtıcı bir şekilde (en azından benim için) bu seçenek varsayılan değildir.
Benimki --inplace
. Yedekleme sunucusu ZFS veya btrfs çalıştırdığında ve yerel anlık görüntüler oluşturduğunuzda harikalar yaratır.
En çok kullandığım kesinlikle --exclude-from
hariç tutulacak şeyler içeren bir dosya belirtmenizi sağlar.
Ayrıca --chmod
çok kullanışlıdır, çünkü kaynağınız karışsa bile izinlerin istenen bir durumda olmasını sağlar.
--backup-dir = date +%Y.%m.%d
--delete Siliyoruz ancak bir kopya yapıyoruz ... ne olur ne olmaz
Tabii ki, ayrıca --delete
, kaynakta bulunamayan şeyleri hedeften kaldıran.
cwrsync - Windows için Rsync http://www.itefix.no/i2/node/1065
Bu sürüm OpenSSH içerir, böylece dosyaları güvenli bir kanal üzerinden aktarabilirsiniz.
--partial
Kesinti durumunda
--bwlimit=100
Bant genişliğini sınırlamak için - büyük dosyaları, dizinleri kopyalamak için iyi
Sunucuda rsync bir arka plan programı olarak ayarlandıysa, paylaşılan modüllere diğer dizin listeleri gibi göz atabilirsiniz. Sonra hangi yolların mevcut olduğunu ve hangilerinin olmadığını görebilirsiniz.
glusterFs kullanırken sıfır boyutlu T dosyalarıyla bir darboğazımız var, çökmüş tuğla veya çoğaltma arasında senkronizasyon için --min-size=1
kilitlenen sunucudan boş dosyayı senkronize etmemek için