Rsync показує прогрес для окремого файлу


21

Я використовую rsync для завантаження / завантаження досить великого файлу (20Gb). Мені відомо - варіант прогресу, але те, що він робить у моєму випадку, це лише показує мені результат в кінці.

Моя проблема полягає в тому, що під час якогось нестабільного з'єднання - я не знаю, чи все ще завантажується / завантажується чи щось пішло не так. Чи є спосіб відобразити панель прогресу для окремого файлу? Щось схоже на те, що wget робить за замовчуванням?

Спасибі!


4
Я використовував rsync 10+ років, і я не можу повірити, що ніколи не задавав це питання.
slm

Відповіді:


17

Це може бути те, що ви хочете.

% 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/

Поломка вимикачів наступним чином:

  • -avvz = архів, багатослівний х 2, стиснення
  • - time = зберегти час модифікації
  • --stats = надати статистику передачі файлів
  • --checksum = пропуск на основі контрольної суми, а не мод-часу та розміру
  • - гуманно-читабельні = вихідні номери у читаному людиною форматі
  • --acls = зберегти ACL (означає -p)
  • --itemize-changes = вивести підсумок змін для всіх оновлень
  • --progress = показати прогрес під час передачі
  • --out-format = '[% t] [% i] (Остання зміна:% M) (байти:% -10l)% -100n'
    • % t = поточний час дати
    • % i = деталізований список того, що оновлюється
    • % M = час останнього змінення файлу
    • % -10l = довжина файлу в байтах (-10 - для вирівнювання та точності)
    • % -100n = ім'я файлу (коротка форма; трейлінг "/" на dir) (-100 - для вирівнювання та точності)

ПРИМІТКА. Див. Підручні сторінки для rsyncта rsyncd.confдетальну інформацію про вищевказані перемикачі.

Наведена вище команда створює таку стенограму:

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

Прогрес-бар у новіших версіях rsync?

Я натрапив на це питання SF:

В одній з відповідей зазначалося, що в нових версіях програми rsyncтепер існує підтримка смуги прогресу. Це виглядає приблизно так:

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

На цій панелі прогресу все ще не відображається стан окремих файлів при передачі, але він відображає відсоток від загальної передачі, що може бути корисним.


1
Дякую за відповідь. Це все ще не зовсім те, що я шукаю. Мені дійсно потрібно, коли ви завантажуєте окремий файл (скажімо, glib-2.0 / glib-object.h) - це покаже мені панель прогресу лише для цього файлу. Уявіть, що glib-2.0 / glib-object.h є 20Gb. Як би ви дізналися, чи все ще завантажується вона і скільки часу залишилось?
лосось


1

Чи використовуєте ви rsync в демон-режимі? Поведінка rsync (на Debian 6) за замовчуванням - це те, як ви просили. Однак на сторінці man для rsyncd.conf я знаходжу, що поведінка за замовчуванням у режимі демона:

журнал передачі
Цей параметр дозволяє вести журнал завантажень та завантажень на файл у форматі, дещо подібному до того, який використовує ftp-демон. Демон завжди записує передачу в кінці, тому якщо передача перервана, у файлі журналу не буде згадуватися.
Якщо ви хочете налаштувати рядки журналу, перегляньте параметр "формат журналу".

Отже, якщо ви використовуєте rsync в демон-режимі, схоже, вам доведеться додати рядок "журнал передачі" до rsyncd.conf.


Ні, я не перебуваю в режимі deamon і не бачу смужки прогресу для кожного файлу, лише підсумок всього процесу
лосось

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.