Rsync menunjukkan progres untuk file individual


21

Saya menggunakan rsync untuk mengunggah / mengunduh file yang cukup besar (20Gb). Saya mengetahui opsi --progress, tetapi apa yang dilakukannya dalam kasus saya hanya menunjukkan kepada saya hasilnya di akhir.

Masalah saya adalah bahwa selama beberapa koneksi tidak stabil - saya tidak tahu apakah itu masih mengunduh / mengunggah atau ada yang salah. Apakah ada cara untuk menampilkan bilah progres untuk file individual? Sesuatu yang mirip dengan apa yang wget lakukan secara default?

Terima kasih!


4
Saya telah menggunakan rsync selama 10+ tahun dan saya tidak percaya saya tidak pernah menanyakan pertanyaan ini.
slm

Jawaban:


17

Ini mungkin yang Anda cari.

% rsync -avvz --times --stats --checksum --human-readable --acls \
    --itemize-changes --progress \
    --out-format='[%t] [%i] (Last Modified: %M) (bytes: %-10l) %-100n' \
    /usr/include/glib-2.0 my-glib-copy/

Switch memecah sebagai berikut:

  • -avvz = arsip, verbose x 2, kompres
  • --times = pertahankan waktu modifikasi
  • --stats = berikan beberapa statistik transfer file
  • --checksum = lewati berdasarkan checksum, bukan mod-time & size
  • --human-readable = angka keluaran dalam format yang bisa dibaca manusia
  • --acls = mengawetkan ACL (menyiratkan -p)
  • --itemize-changes = keluaran ringkasan perubahan untuk semua pembaruan
  • --progress = tunjukkan progres selama transfer
  • --out-format = '[% t] [% i] (Terakhir Dimodifikasi:% M) (byte:% -10l)% -100n'
    • % t = waktu tanggal saat ini
    • % i = daftar terperinci dari apa yang sedang diperbarui
    • % M = waktu file terakhir yang dimodifikasi
    • % -10l = panjang file dalam byte (-10 untuk penyelarasan dan presisi)
    • % -100n = nama file (bentuk pendek; trailing "/" pada dir) (-100 untuk penyelarasan dan presisi)

CATATAN: Lihat halaman manual untuk rsyncdan rsyncd.confuntuk rincian lengkap tentang sakelar di atas.

Perintah di atas menghasilkan transkrip berikut:

sending incremental file list
delta-transmission disabled for local transfer or --whole-file
[2012/12/23 21:34:46] [cd+++++++++] (Last Modified: 2010/12/19-08:13:31) (bytes: 4096      ) glib-2.0/
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:30) (bytes: 1511      ) glib-2.0/glib-object.h
       1.51K 100%    0.00kB/s    0:00:00
       1.51K 100%    0.00kB/s    0:00:00 (xfer#1, to-check=181/183)
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:30) (bytes: 2910      ) glib-2.0/glib.h
       2.91K 100%    2.78MB/s    0:00:00
       2.91K 100%    2.78MB/s    0:00:00 (xfer#2, to-check=180/183)
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:31) (bytes: 3613      ) glib-2.0/gmodule.h
       3.61K 100%    3.45MB/s    0:00:00
       3.61K 100%    3.45MB/s    0:00:00 (xfer#3, to-check=179/183)
...
...
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:31) (bytes: 8431      ) glib-2.0/gobject/gvaluecollector.h
       8.43K 100%  141.96kB/s    0:00:00
       8.43K 100%  141.96kB/s    0:00:00 (xfer#178, to-check=1/183)
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:31) (bytes: 8507      ) glib-2.0/gobject/gvaluetypes.h
       8.51K 100%  143.23kB/s    0:00:00
       8.51K 100%  143.23kB/s    0:00:00 (xfer#179, to-check=0/183)
total: matches=0  hash_hits=0  false_alarms=0 data=1305506

rsync[2996] (sender) heap statistics:
  arena:         540672   (bytes from sbrk)
  ordblks:            3   (chunks not in use)
  smblks:             7
  hblks:              2   (chunks from mmap)
  hblkhd:        401408   (bytes from mmap)
  allmem:        942080   (bytes from sbrk + mmap)
  usmblks:            0
  fsmblks:          592
  uordblks:      404784   (bytes used)
  fordblks:      135888   (bytes free)
  keepcost:      134240   (bytes in releasable chunk)

rsync[2999] (server receiver) heap statistics:
  arena:         286720   (bytes from sbrk)
  ordblks:            2   (chunks not in use)
  smblks:             8
  hblks:              3   (chunks from mmap)
  hblkhd:        667648   (bytes from mmap)
  allmem:        954368   (bytes from sbrk + mmap)
  usmblks:            0
  fsmblks:          672
  uordblks:      174480   (bytes used)
  fordblks:      112240   (bytes free)
  keepcost:      102352   (bytes in releasable chunk)

rsync[2998] (server generator) heap statistics:
  arena:         233472   (bytes from sbrk)
  ordblks:            4   (chunks not in use)
  smblks:             6
  hblks:              2   (chunks from mmap)
  hblkhd:        401408   (bytes from mmap)
  allmem:        634880   (bytes from sbrk + mmap)
  usmblks:            0
  fsmblks:          448
  uordblks:       83152   (bytes used)
  fordblks:      150320   (bytes free)
  keepcost:      131120   (bytes in releasable chunk)

Number of files: 183
Number of files transferred: 179
Total file size: 1.31M bytes
Total transferred file size: 1.31M bytes
Literal data: 1.31M bytes
Matched data: 0 bytes
File list size: 6.30K
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 350.39K
Total bytes received: 3.43K

sent 350.39K bytes  received 3.43K bytes  707.64K bytes/sec
total size is 1.31M  speedup is 3.69

Progress Bar dalam versi rsync yang lebih baru?

Saya menemukan pertanyaan SF ini:

Salah satu jawaban menyebutkan bahwa dalam versi yang lebih baru rsyncsekarang ada dukungan untuk bilah kemajuan. Ini terlihat seperti ini:

% ./rsync -a --info=progress2 /usr .
    305,002,533  80%   65.69MB/s    0:00:01  xfr#1653, ir-chk=1593/3594)

Bilah kemajuan ini masih tidak menunjukkan status file individual dalam transfer, tetapi itu menunjukkan persentase dari keseluruhan transfer yang mungkin bermanfaat.


1
Terima kasih atas jawabannya. Masih belum cukup apa yang saya cari. Yang benar-benar saya butuhkan adalah ketika Anda mengunduh file individual (misalkan glib-2.0 / glib-object.h) - itu akan menunjukkan kepada saya progress bar untuk file ini saja. Bayangkan glib-2.0 / glib-object.h menjadi 20GB. Bagaimana Anda tahu jika masih mengunduh dan berapa banyak waktu yang tersisa?
Salmon


1

Apakah Anda menggunakan rsync dalam mode daemon? Perilaku default rsync (pada Debian 6) adalah bagaimana Anda telah meminta. Namun, saya menemukan di halaman manual untuk rsyncd.conf bahwa perilaku default dalam mode daemon adalah:

transfer logging
Parameter ini memungkinkan logging file dan unduhan per file dalam format yang agak mirip dengan yang digunakan oleh ftp daemon. Daemon selalu mencatat transfer pada bagian akhir, jadi jika transfer dibatalkan, tidak disebutkan akan dibuat dalam file log.
Jika Anda ingin menyesuaikan garis log, lihat parameter "format log".

Jadi jika menggunakan rsync dalam mode daemon, sepertinya Anda harus menambahkan baris "transfer logging" ke rsyncd.conf.


Tidak, saya tidak dalam mode deamon dan saya tidak melihat bilah progres untuk setiap file, hanya ringkasan untuk seluruh proses
Salmon

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.