rsync - yalnızca yüklenen dosyaları bildir


14

Ben rsync ile ilgili bir sorun var: ya da ben (bayrak kullanıyorsanız -v) rsyncing olduğum dizinlerde tüm dosyaları gösterir ya da hiç (kullanmadığınız zaman -v).

Aslında uzak ucuna yüklenmesi gereken dosyalar dışında rsync sessiz olmasını istiyorum . Bu tür raporları etkinleştirmek için bir bayrak var mı? Bunu belgelerde bulamıyorum

Yanıtlar:


11

Evet, -ibayrağı kontrol et . Her işlemin şifreli bir biçimde bir raporunu verir. Biçimin tam tanımı için kılavuz sayfasına bakınız.

Uzak ana bilgisayara gönderilen dosyaların listesini almak için aşağıdakileri kullanabilirsiniz:

rsync <options> -i <src> <dst> | grep '^<' | awk '{ print $2 }'

1
Bu, değiştirilenleri değil, tüm dosyaları tekrar raporlamaktadır.
dangonfast

@gonvaled Hayır, yalnızca uzak ana bilgisayara gönderilen dosyalar çıkarılır ( <fcstpoguax filenamefarklı bayrakların neden güncelleştirilmeleri gerektiğini gösterir). Tüm dosyaları rapor ederse, testinizde veya ortamınızda bir sorun olabilir.
Oliver

Bence haklısın. Bu sayfaya bir göz attım ve dediğin gibi anlatılıyor. Ancak sistemim tüm dosyaları rapor ediyor. Belki uzak
uçla ilgili

Hımmm. yaklaşıyor: raporlama dizesi (tüm dosyalar için) <f..T....... Manpage'e göre, bu zaman damgalarıyla ilgilidir.
dangonfast

1
kullanarak grep -E '^[^.]|^$'da istatistik (ya da uyarılar, hatalar, ...) hatları geçmesine izin verir, sadece bir nokta ile başlayan gerçekten sıkıcı hatları kaldırarak ...
Frank Nocke

10

tek bir rsync -vaslında sadece aktarılan dosyaları yazdırır. Her seferinde tam listeyi alıyorsanız, muhtemelen değişiklik zamanı + boyutuna dayanan varsayılan rsync src / dest karşılaştırma algoritmasının sizin durumunuz için uygun olmadığı anlamına gelir. Rsync'in dosyaları sağlama toplamıyla karşılaştırmasını sağlayan -c( --checksum) bayrağını ekleyebilirsiniz . Bunun belli bir G / Ç ek yükü oluşturduğunu unutmayın.

Biraz ilgili olursanız, --info=flistbunun yerine kullanırsanız -v, dosyaların daha kesilmiş bir çıktısını alırsınız (temel olarak tipik -vçıktının üstbilgisini ve altbilgisini atlarsınız ).


1
--info=flistyalnızca her yerde bulunmayan rsync> = 3.1 sürümlerinde bulunur. Örneğin, macOS eski bir 2.6.9 sürümü ile teslim edilir, çünkü Rsync v3 GPL 3'ün
altındadır

1
Bu Apple GPL söylentisi süper sulu olsa da, Enterprise Linux'un sertifikayı korumak ve sürümün desteklenen ömrü boyunca uyumluluğu (api + abi) garanti etmek için sürümlerin kilitlendiği (ve dallandığı) büyük bir destek aralığına (14 yıl) sahip olduğunu unutmayın. . Aslında bunu yapmanın tek uygun yolu ve yan etki, sürüm numaralarının eski görünmesi ve yeni özelliklerin uzun süre gibi görünebilecek şey için Enterprise'a çarpmamasıdır.
user2066657

2

aklıma gelen bir şey daha ayrıntılı günlük biçimi kullanmak ve almak istediğiniz ne awk'ing.

Örneğin:

rsync -a --out-format="%b  %i %f" /etc/ /tmp/qq/ |awk '{if ($1>0) {print $3}}'

bu çok sağlam değil, boşluklu dosya isimlerini iyi işlemeyecek.


1

1. -iseçeneğini kullanın

Bu ikonize (veya: şifreli) değişiklik bayrakları için. Çıktınız şöyle görünecektir:

*deleting   DSC00012 (copy).JPG
.d..tp..... ./
.f...p..... DSC00011.JPG
>f+++++++++ DSC00012 (copy2).JPG
>f.stp..... DSC00012.JPG
.f...p..... DSC00014.JPG

Number of files: 5 (reg: 4, dir: 1)
Number of created files: 1 (reg: 1)
... more statistic stuff
sent 636.01K bytes  received 4.63K bytes  1.28M bytes/sec
total size is 2.84M  speedup is 4.44

2. nokta ile başlayan her satırı grep.

Diğer tüm satırların (okunabilirlik için boş satırlar da) geçmesine izin verin:

rsync -arz -i --stats -h ... /mnt/FooDrive/ /mnt/backup  | grep -E '^[^.]|^$'

Ve işte buradayız :-) - Sadece doktorun sipariş ettiği şey:

*deleting   DSC00012 (copy2).JPG
>f.stp..... DSC00011.JPG
>f+++++++++ DSC00012 (copy).JPG

Number of files: 5 (reg: 4, dir: 1)
Number of created files: 1 (reg: 1)
...

Avlanmak yerine noktalardan kaçınmanın> , istatistiklere izin vermesinin yanı sıra potansiyel hatalar, uyarılar vb.

Sonunda istatistiklere sahip olmak kişisel bir tercihtir. Bunları -h --statsbeğenmediyseniz kullanmayın . En önemli ilginizin yüzlerce veya binlerce değişmemiş dosyayı kaydırıp görmediğini sanıyorum ...


0

Bunu yapmak için bir bayrak olduğunu sanmıyorum ama şimdi olabilir. İşte böyle yaptım:

rsync -vv [other options] | grep -v 'uptodate'

1
Benim rsync (sürüm 3.0.7) uptodateraporlamaya eklenmez, bu yüzden filtrelemek mümkün değildir.
dangonfast

Mike'ın yukarıda neler yayınladığını ve @ jeckyll2hide'ın neyi gösterdiğini düzeltmek veya en azından açıklığa kavuşturmak istiyorum. Sorun rsync -v artık "uptodate" dizesini yayıyor değil, daha çok rsync -vv kullanmanız gerektiğini düşünüyorum. Ben sadece bu vs rsync sürüm 3.1.0 ile Ubuntu 14.04 üzerinde çalıştığını doğruladı unutmayın. Mike, yayınınızı bunu yansıtacak şekilde güncelleyebilir misiniz?
John Mark Mitchell
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.