rsync: senkronizasyona 10 saat ekleyen büyük hariç tutma listesi


2

Bir gigabit bağlantısı üzerinden bir yerel (LAN) sunucusundan ~ 410 gb veri senkronize eden bir Centos 6 kutusunda çalışan bir rsync yedekleme komut dosyası vardı. Bu betik saat başı çalışır ve kopyalanacak yeni dosya yoksa, tamamlanması genellikle 20 dakika sürer.

Centos kutusunda çalışan ve 1 yıldan daha eski olan yerel yedekleme kopyasındaki tüm dosyaları (bazı kontrollerden sonra) silen ve bu dosyaları rsync'nin ayrıştırması için bir dışlama listesine ekleyen bir temizleme komut dosyası kullandım. Her şey yolunda gidiyor, ancak tamamlanması yaklaşık 10 saat sürüyor (yeni dosya olmadan). İlk temizlemeden sonra kaynak verileri şimdi yaklaşık 80 gb ve dışlama listesi yaklaşık 90 mb'dir.

İşte komut dosyasındaki rsync satırım:

rsync -pad $wholefiles  --exclude-from=${exclfile}.combined /mnt/${smbdir}/${drive}/${foldername} /backup/rob/${smbdir}/${drive} >> /var/log/rob/robso.log 2>&1

Rsync (veya bash) dosya listeleri için boyut sınırlamaları var mı? Sözdizimde böylesine büyük miktarda işlem süresine neden olacak bir şey görüyor musunuz? Şimdiden teşekkürler.

EDIT: Yukarıdaki rsync satırındaki $ wholefiles değişkeni, bu durumda --whole-file seçeneğini iletir.


Testten önce cron işini devre dışı bıraktın mı? Arka planda çalışan birden fazla rsync işleminiz olup olmadığını kontrol edin. NetIO'nuzu kontrol edin.
Kaurin

Teşekkürler, ama evet var, @Kaurin. Ayrıca rsync 3.0+ uygulamasının büyük dosya sayılarıyla daha iyi hız verdiğini ve bu nedenle 2,68 -> 3,06 arasında yükseltildiğini okudum. Dün gece koştum ve daha hızlı değil.
kiwisan

Samba'yı nasıl monte ediyorsunuz? Sigorta = kötü, Cif = iyi. Sigorta korkunç bir performansa sahiptir.
Kaurin

1
Çok büyük klasör yapıları (100k klasörler, 1mil dosyaları) ile uzun rsync gecikmeleri ile ilgili bir sorun vardı. Ssh üzerinden tek yönlü bir senkronizasyon yapmak için birliği ayarlamak güncelleme yapmadan saniyeler içinde çalışır. Benim için sorun, rsync'in bir dosyanın değişip değişmediğine bakılmaksızın tüm dosya listesini ağ üzerinden göndermesiydi. Unison sadece değiştirilen dosyaların listesini gönderir.
Clayton Stanley,

Yanıtlar:


0

Bunu tersine çevirirdim. rsyncÇok sayıda dosyayı dışlamak yerine, bu dosyaları rsyncdikkate almam .

cd "/mnt/${smbdir}/${drive}/${foldername}" &&
    find . -maxdepth 1 -mtime -366 -type f -print0 |
    rsync -a0 --files-from=- . "/backup/rob/${smbdir}/${drive}" >> /var/log/rob/robso.log 2>&1

Özyinelememek rsync -d( --dirs) olduğunu belirterek, hiçbir özyineleme yapmamayı düşündüğünüzden emin değilim . Bunu yanlış anladıysam, kaldır -maxdepth 1.

Bu --whole-fileseçenek önemsizdir, çünkü her zaman burada kullanılacaktır, çünkü rsyncaynı "yerel" dosya sisteminin iki bölümü arasında kopyalandığını görüyor. (Evet, bu onun delta algoritmasının devre dışı olduğu anlamına gelir.)

findGöz önünde bulundurulan dosya kümesi için zaman aralığını azaltmak isteyebilirsiniz . Burada, yalnızca son 366 günde değiştirilmiş dosyaları içerecek şekilde ayarlamıştım çünkü bir yıldan eski dosyaları hariç tuttuğunuzdan bahsettiniz.

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.