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.