Favori rsync ipuçları ve püf noktaları


57

Daha fazla kullandıkça rsync, bunun dosya transferinin İsviçre çakısı olduğunu anlıyorum. Çok fazla seçenek var. Son zamanlarda gidebileceğinizi öğrendim --remove-source-filesve kopyalandığında bir dosyayı kaynaktan kopyalar, bu da programı kopyalamak yerine biraz daha harekete geçirir. :)

En sevdiğiniz küçük rync ipuçları ve püf noktaları nelerdir?

Yanıtlar:


19

Çok sayıda dosyayı senkronize etmek zorundaysanız, 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 sürüm 2.6.3 bir saatten fazla sürecek veya 5 milyon dosya endeksi oluşturmaya çalışırken çökecek, sürüm 3.0.2 derhal kopyalamaya başlayacaktır.


Unutulmaması gereken bir nokta, eğer bazı seçenekleri kullanırsanız (örneğin --delete-before, gibi) eski "ilk önce liste listesi" davranışı, bu seçeneklerin doğru çalışması için gerekli olduğundan kullanılır - bu davranışı görmüyorsanız, Kullanmakta olduğunuz diğer seçeneklerin mümkün olmasını engellediği bilinmektedir. Bu, büyük bir ağaç üzerinde etkileşimli olarak rsync kullanıyorsanız ve ilk taramayı zorlamak istediğinizde, böylece çıktının --progressdoğru olması için yararlı olabilir (yani "karşılaştırılacak nesneler" sayısı, ilk taramadan sonra yeni nesneler bulunamadığından asla yükselmeyecektir. ).
David Spillett

18

--link-destAlan verimli anlık görüntü tabanlı yedeklemeler oluşturmak için kullanılması , yedeklenmiş verilerin birden çok tam kopyasına sahip olduğunuz (her yedekleme çalışması için bir tane) göründüğü, ancak işlemler arasında değişiklik yapmayan dosyaların yer tasarrufu sağlayan yeni kopyalar oluşturmak yerine bağlanması zor.

(aslında, hala aynı şeyi gerçekleştiren rysnc-followed-by-cp -al metodunu kullanıyorum, her iki tekniğin de eski ama yine de çok iyi çalışması için http://www.mikerubel.org/computers/rsync_snapshots/ adresini ziyaret edin . ve ilgili konular)

Bu tekniğin en büyük dezavantajı, bir dosya disk hatası nedeniyle bozulursa, o dosyaya bağlanan tüm anlık görüntülerde aynı derecede bozuk olması, ancak buna karşı iyi bir koruma sağlayacak çevrimdışı yedeklemelerim olması. Dikkat etmeniz gereken başka bir şey, dosya sisteminizin yeterli miktarda inode içerdiği veya disk alanınız tükenmeden önce tükeneceği anlamına gelir (ext2 / 3 varsayılanlarında hiçbir zaman bir sorun yaşamadım).

Ayrıca, --dry-runözellikle --delete*seçenekleri kullanırken, biraz sağlıklı bir paranoya için çok çok yararlı asla unutmayın .


6
+dry-run için +1
David Z

1
-N -dry-run
ctennis'in

3
Uzun isimlerle, özellikle de başkalarının da sürdürmesini sağlayabilecek betiklerde kalmayı tercih ederim. Dokümanlara atıfta bulunulmadan neyin kastedildiğini netleştirir.
David Spillett

+1 Yukarıda açıklandığı gibi sabit bağlı görüntüler için --link-dest yöntemiyle birçok makinede birçok TB yedek yedekleme çözümü kullandım - mükemmel çalıştı.
matja

--Link-dest yedeklemelerini seviyorsanız , kaputun altında rsync kullanan Dirvish sayfasını inceleyin
hfs

14

Yavaşça bir bağlantı üzerinden bazı büyük dosyaları olan bir web sitesini güncellemeniz gerekirse, küçük dosyaları şu şekilde aktarabilirsiniz:

rsync -a - maks. boyut = 100K / var / www / orada: / var / www /

o zaman bunu büyük dosyalar için yapın:

rsync -a - min-size = 100K - bwlimit = 100 / var / www / orada: / var / www /

rsync, web siteleri için kullanışlı birçok seçeneğe sahiptir. Maalesef, eşzamanlı güncellemeleri tespit etmenin yerleşik bir yolu bulunmadığından, büyük dosyaların üst üste binmesini önlemek için cron komut dosyalarına mantık eklemeniz gerekir.


10

Bir dosyadan küçük bir altküme bir dizinden başka bir yere senkronize edilmeye çalışılırken --existing seçeneğini kullanıyorum.


Teşekkürler! Bu sadece beni kötü bir filtre kuralı yazımından kurtardı.
benzado 4'10

8

--rsh benimdir.

Şifreyi ssh üzerindeki şifreyi daha hızlı bir şeye değiştirmek için kullandım ( --rsh="ssh -c arcfour"), ayrıca doğrudan konuşamayan bilgisayarlar arasında dosyaları senkronize etmek için bir sshs zinciri (bununla birlikte kullanmanızı öneririz ssh-agent). ( rsync -av --rsh="ssh -TA userA@hostA ssh -TA -l userB" /tmp/foobar/ hostB:/tmp/foobar/).


7
--time-limit

Bu seçenek kullanıldığında, rsync T dakika sonra duracak ve çıkacaktır. Bence bu seçenek, gece boyunca (yoğun olmayan saatler) büyük miktarda veriyi yeniden senkronize ederken ve insanların gündüz (yoğun saatlerde) ağı kullanmaya başlama zamanı geldiğinde durduğunda yararlı olduğunu düşünüyorum.

--stop-at=y-m-dTh:m

Bu seçenek, rsync'i ne zaman durduğunuzu belirlemenizi sağlar.

Batch Mode

Toplu mod, aynı güncelleme setini birçok özdeş sisteme uygulamak için kullanılabilir.


İşe yarar! Süreci öldürmeden önce "at" komutunu kullanıyordum
Lionel


2
Ne yazık ki bu seçenekler Redhat / Centos veya Ubuntu dağıtımları ile dağıtılan rsync'te mevcut değildir.
IanB

@Lionel: atSüreci öldürmek için nasıl kullanıyorsunuz ?
IMTheNachoMan

6

Yavaş çalışan bir rsync'in ne kadar süre boyunca kazanıldığını merak ediyorsanız ve dosyaları aktarılırken listelemek için -v'yi kullanmadıysanız, hangi dosyaların açıldığını öğrenebilirsiniz:

 ls -l /proc/$(pidof rsync)/fd/*

/ proc olan bir sistemde

Örneğin, uzaktaki sistemde bir sürü boşluk kalmış gibi görünse de, rsync şimdi benim için asıldı. Bu numara bana hatırlamadığım, diğer uca sığmayacak olan beklenmedik derecede büyük bir dosyayı bulmamda yardımcı oldu.

Ayrıca bana biraz daha ilginç bilgiler de verdi - diğer uç görünüşte pes etti, çünkü kırık bir soket bağlantısı vardı:

/proc/22954/fd/4: broken symbolic link to `socket:[2387837]'

5

--archive kaynak dosyalardan (izinler, sahiplik vb.) çoğu meta verinin kopyalandığından emin olan yedekleme benzeri işler için standart bir seçimdir (varsayılan olmasa da).

Bununla birlikte, bunu kullanmak istemiyorsanız, çoğu zaman dahil etmek isteyeceksiniz --times, bu da dosyaların değiştirilme zamanları boyunca kopyalanacaktır. Bu, rsync'in değişiklik zamanlarını karşılaştırdığı ve değiştirilmediği takdirde dosyayı atladığı için çalışan (tekrar tekrar yaptığınızı varsayarak) daha hızlı çalıştıracaktır. Şaşırtıcı bir şekilde (en azından benim için) bu seçenek varsayılan değil.


4

En çok kullandığım, kesinlikle --exclude-fromdışlanacak şeyleri içeren bir dosya belirlemenizi sağlar.

Ayrıca --chmodçok faydalı buluyorum çünkü kaynağınız dağılmış olsa bile izinlerin istenen bir durumda olmasını sağlamanıza izin veriyor.


4

--backup-dir = date +%Y.%m.%d--delete Siliyoruz ancak bir kopya alıyoruz ... sadece durumda


4

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.


3

Tabii ki, --deletekaynakta bulunamayan şeyleri hedeften çıkaran da var.



2
--partial 

Kesinti durumunda

--bwlimit=100

Bant genişliğini sınırlamak için - büyük dosyaları, dizinleri kopyalamak için iyi


Birimi nedir bwlimit? saniye başına bit, saniye başına bayt?
Timo Kähkönen 10.03

@Timo, bwlimit KBytes / saniye cinsindendir.
Andrew Ferrier

1

Sunucuda bir daemon olarak ayarlanan rsync varsa, diğer dizin listeleri gibi paylaşılan modüllere de göz atabilirsiniz. Sonra hangi yolların uygun olduğunu ve ne olmadığını görebilirsiniz.


1

GlusterF'leri kullanırken, sıfır boyutlu T dosyalarına sahip bir darboğaza sahibiz, çökmüş tuğla veya çoğaltma arasında eşitleme yapmak için --min-size=1boş dosyayı çökmüş sunucudan eşitlememek için kullanmalıyız

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.