Jak wyświetlić pasek postępu podczas uruchamiania rsync?

31

Używam Ubuntu 12.04 jako repozytorium i chciałbym wyświetlić pasek postępu, gdy korzystam rsyncz wiersza poleceń. Wypróbowałem opcję sugerowaną w tym artykule ( -P), ale wolę widzieć pasek postępu i nie używać Grsync. rsync -P source destObecnie używam .

Joseph Smith
źródło
Doceniam szybką odpowiedź. Nie mogę się doczekać, aby to zbadać.
Joseph Smith
To był dobry początek, ale muszę wiedzieć, jak zaktualizować pasek postępu, gdy działa rsync. Znajomy powiedział, że muszę zaimplementować rozmiar serwera i wdrożyć komendę watch za pomocą potoku.
Joseph Smith
Jest odpowiedź :)
AB

Odpowiedzi:

7

Co powiesz na to?

rsync_param="-av"
rsync "$rsync_param" a/ b |\
     pv -lep -s $(rsync "$rsync_param"n a/ b | awk 'NF' | wc -l)
  • $rsync_param

    Unika podwójnego wprowadzania parametrów

  • $(rsync "$rsync_param"n a/ b | awk 'NF' | wc -l)

    Określa liczbę kroków do wykonania.

  • a/ b

    1. a/ jest źródłem
    2. b jest celem
AB
źródło
1
@JosephSmith Czy jesteś zadowolony z mojej odpowiedzi? W takim razie daj mi głos (∧). Gdybym mógł rozwiązać twój problem, byłoby miło, gdybyś zaznaczył moją odpowiedź (✓). ;)
AB
Przyjąłem to kilka dni temu z wielkim uśmiechem. Po prostu jednak go nie wybrałem i zaakceptowałem ponownie. Nie sądzę, żebym mógł zagłosować, ponieważ nie mam wystarczającego uznania. Dzięki za pomoc btw.
Joseph Smith
Wszelkie pomysły, dlaczego pojawia się błąd, nie znaleziono pliku ani katalogu? Polecenie, które uruchamiam to: root @ cto: / repo / ubuntu # rsync "$ rsync_param" -a --prune-empty-dirs --exclude "* .iso" archive.ubuntu.com/ubuntu/indices/ / repo / ubuntu / indices | pv -lep -s $ (rsync "$ rsync_param" n archive.ubuntu.com/indices/ / repo / ubuntu / indices | awk 'NF' | wc -l)
Joseph Smith
1
"$rsync_param"njest raczej dziwny; cudzysłowy oznaczają, że może działać tylko na opcjach bez spacji, a dołączenie ndo końca oznacza, że ​​może działać tylko z krótkimi opcjami. Znacznie jaśniejsza i łatwiejsza jest po prostu $rsync_param -n, która określa suchobieg bez polegania na formacie rsync_param, a nie przytaczając go, można również uwzględnić długie opcje
Izkata,
Pracowałem po raz pierwszy,
tyle
36

rsync ma --infoopcję, której można użyć nie tylko do wyświetlenia bieżącego postępu, ale także prędkości transferu i upływu czasu:

--info=FLAGS            fine-grained informational verbosity

Wyjaśnienie, jak go używać, znajduje się w -Popcji na stronie podręcznika:

-P     The -P option is equivalent to --partial --progress.  Its purpose is to
       make it much easier to specify these two options for a long transfer that
       may be interrupted.

       There is also a --info=progress2 option that outputs statistics based on
       the whole transfer, rather than individual files.  Use this flag
       without  out‐putting  a  filename  (e.g. avoid -v or specify --info=name0)
       if you want to see how the transfer is doing without scrolling the screen 
       with  a  lot  of names.   (You  don’t  need  to specify the --progress
       option in order to use --info=progress2.)

Więc następujące:

rsync -r --info=progress2 --info=name0 "$src" "$dst"

Wyniki są następujące i są stale aktualizowane:

18,757,542,664 100%   65.70MB/s    0:04:32 (xfr#1389, to-chk=0/1510)

Należy pamiętać, że kiedy rozpoczyna się przesyłanie, całkowita liczba porcji, a tym samym bieżący postęp, może ulec zmianie, gdy używana jest opcja rekurencyjna w miarę wykrycia większej liczby plików do synchronizacji

Jon
źródło
16

Możesz użyć --progressi --statsparametrów.

rsync -avzh --progress --stats root@server:/path/to/file output_name

root@server's password: 
receiving incremental file list
file
         98.19M  54%    8.99MB/s    0:00:08
zbieg
źródło
2
To działało dla mnie na macOS.
mango
2

To w końcu zadziałało:

rsync "$rsync_param" -a --prune-empty-dirs --exclude "*.iso" rsync://archive.ubuntu.com/ubuntu/indices/ /repo/ubuntu/indices | pv -lep -s $(rsync "$rsync_param"n rsync://archive.ubuntu.com/indices/ /repo/ubuntu/indices | awk 'NF' | wc -l)
Joseph Smith
źródło
1

Jeśli twoja wersja rsyncnie akceptuje tej --info=progress2opcji, możesz użyć tqdm:

Żeby zainstalować:

pip install tqdm

Używać:

$ rsync -av / source / dest | tqdm --unit_scale | wc -l
10.0Mit [00:02, 3.58Mit / s]
ostrokach
źródło
0

Tak, rób to, co powiedział Jon : użyj --info=progress2opcji. Ale co mam zrobić, jeśli moja wersja rsync jest za stara i nie obsługuje tej opcji? Odpowiedź: uaktualnij rsync!

Oto jak zbudować rsyncze źródła na Ubuntu

(testowany na Ubuntu 16.04)

  1. Pobierz najnowszą wersję rsync: https://download.samba.org/pub/rsync/src/ . Przykład: „rsync-3.1.3.tar.gz”. Zapisz go w katalogu BEZ PRZESTRZENI, aby upewnić się, że buduje się poprawnie.
  2. W Eksploratorze folderów kliknij go prawym przyciskiem myszy i przejdź do „Wyodrębnij tutaj”.
  3. Wprowadź wyodrębniony folder (np .: „rsync-3.1.3”)
  4. Kliknij prawym przyciskiem myszy ekran w menedżerze folderów i wybierz „Otwórz w terminalu”. Alternatywnie wykonaj kroki od 2 do 4 ręcznie w wierszu polecenia. Ostatecznie wystarczy przejść cddo tego wyodrębnionego katalogu zawierającego rsynckod źródłowy.
  5. Sprawdź aktualną wersję rsync. Zanotuj to, aby móc później sprawdzić, czy rzeczywiście zostało zaktualizowane.

    rsync --version
    
  6. Zainstaluj niezbędne narzędzia:

    sudo apt update
    sudo apt install yodl
    
  7. Budować:

    ./configure
    make
    sudo make install
    
  8. Upewnij się, że został zaktualizowany:

    rsync --version
    

    Przykładowe dane wyjściowe:

    $ rsync --version
    rsync  version 3.1.3  protocol version 31
    Copyright (C) 1996-2018 by Andrew Tridgell, Wayne Davison, and others.
    Web site: http://rsync.samba.org/
    Capabilities:
        64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
        socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
        append, no ACLs, xattrs, iconv, symtimes, prealloc
    
    rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
    are welcome to redistribute it under certain conditions.  See the GNU
    General Public Licence for details.
    
  9. Wyszukaj na stronach podręcznika „progress2”. Będziesz teraz mieć dostęp do --info=progress2opcji:

    man rsync
    

    ... następnie naciśnij /klawisz i wpisz progress2; naciśnij Enter, aby wyszukać; naciśnij, naby dopasować tekst „n”, aż znajdziesz szukany wpis:

    Istnieje również --info=progress2opcja, która generuje statystyki na podstawie całego transferu, a nie pojedynczych plików. Użyj tej flagi bez wypisywania nazwy pliku (np. Unikaj -vlub określ --info=name0), jeśli chcesz zobaczyć, jak działa przesyłanie bez przewijania ekranu z wieloma nazwami. (Nie musisz określać --progressopcji, aby użyć --info=progress2).

Zobacz także: „Jak korzystać z rsync”, autor: Gabriel Staples: https://superuser.com/questions/1271882/convert-ntfs-partition-to-ext4-how-to-copy-the-data/1464264#1464264

Częściowe odniesienia:

  1. http://www.beginninglinux.com/home/backup/compile-rsync-from-source-on-ubuntu
Gabriel Staples
źródło