Come posso visualizzare una barra di avanzamento quando eseguo rsync?


31

Sto usando Ubuntu 12.04 come repository e vorrei visualizzare una barra di avanzamento quando si utilizza rsyncdalla riga di comando. Ho provato l'opzione suggerita in questo articolo ( -P), ma preferisco vedere una barra di avanzamento e non usare Grsync. Sto usando rsync -P source destattualmente.



Apprezzo la risposta veloce. Non vedo l'ora di ricercare questo.
Joseph Smith,

È stato un buon inizio, ma devo sapere come aggiornare la barra di avanzamento mentre rsync funziona. Un amico ha detto che devo implementare le dimensioni del server e implementare un comando watch con pipe.
Joseph Smith,

C'è una risposta :)
AB

Risposte:


7

Cosa ne pensi di questo?

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

    Evita il doppio input di parametri

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

    Determina il numero di passaggi da completare.

  • a/ b

    1. a/ è la fonte
    2. b è il bersaglio

1
@JosephSmith Sei stato soddisfatto della mia risposta? Allora dammi un voto (∧). Se potessi risolvere il tuo problema, sarebbe bello se tu segnassi la mia risposta (✓). ;)
AB,

L'ho accettato un paio di giorni fa con un grande sorriso. Ho appena selezionato e accettato di nuovo però. Non credo di poter votare perché non ho credito sufficiente. Grazie per l'assistenza tra l'altro.
Joseph Smith,

Qualche idea sul perché ottengo un errore, nessun file o directory trovato? Il comando che eseguo è: root @ cto: / repo / ubuntu # rsync "$ rsync_param" -a --prune-empty-dirs --exclude "* .iso" archive.ubuntu.com/ubuntu/indices/ / repo / ubuntu / indici | pv -lep -s $ (rsync "$ rsync_param" n archive.ubuntu.com/indices/ / repo / ubuntu / index | awk 'NF' | wc -l)
Joseph Smith

1
"$rsync_param"nè piuttosto strano; le virgolette indicano che può funzionare solo su opzioni senza spazi e che il collegamento nall'estremità significa che può funzionare solo con opzioni brevi. Molto più semplice e chiaro è semplicemente $rsync_param -n, che specifica il funzionamento a secco senza fare affidamento sul formato di rsync_param, e non citandolo, si potrebbero includere anche opzioni lunghe
Izkata,

Ha funzionato per la prima volta, tranne per il fatto che non mostra la velocità di trasferimento
Ciasto piekarz

36

rsync ha --infoun'opzione che può essere utilizzata non solo per visualizzare l'avanzamento corrente, ma anche la velocità di trasferimento e il tempo trascorso:

--info=FLAGS            fine-grained informational verbosity

La spiegazione di come usarlo rientra -Pnell'opzione nella pagina man:

-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.)

Quindi il seguente:

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

Risultati in output e in continuo aggiornamento:

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

Si noti che quando il trasferimento inizia il numero totale di blocchi, e quindi l'avanzamento corrente, può cambiare quando viene utilizzata l'opzione ricorsiva man mano che vengono rilevati più file per la sincronizzazione


16

È possibile utilizzare --progresse --statsparametri.

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

2
Questo ha funzionato per me su macOS.
mango,

2

Questo alla fine ha funzionato:

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)

1

Se la tua versione di rsyncnon accetta l' --info=progress2opzione, puoi utilizzare tqdm:

Installare:

pip install tqdm

Usare:

$ rsync -av / source / dest | tqdm --unit_scale | wc -l
10.0Mit [00:02, 3.58Mit / s]

0

Sì, fai quello che ha detto Jon : usa l' --info=progress2opzione. Ma cosa devo fare se la mia versione di rsync è troppo vecchia e non supporta questa opzione? Risposta: aggiorna rsync!

Ecco come compilare rsyncda sorgenti su Ubuntu

(testato su Ubuntu 16.04)

  1. Scarica l'ultima versione di rsync: https://download.samba.org/pub/rsync/src/ . Esempio: "rsync-3.1.3.tar.gz". Salvalo in una directory SENZA SPAZI PER TUTTI per assicurarti che funzioni correttamente.
  2. In Esplora cartelle, fai clic con il pulsante destro del mouse e seleziona "Estrai qui".
  3. Inserisci la cartella estratta (es: "rsync-3.1.3")
  4. Fai clic con il pulsante destro del mouse sullo schermo nel gestore cartelle e vai su "Apri in Terminale". In alternativa, eseguire manualmente i passaggi da 2 a 4 sulla riga di comando. Alla fine devi solo essere cdinserito in questa directory estratta contenente il rsynccodice sorgente.
  5. Controlla la versione corrente di rsync. Prendi nota di ciò in modo da poter vedere in seguito che è stato effettivamente aggiornato.

    rsync --version
    
  6. Installa gli strumenti necessari:

    sudo apt update
    sudo apt install yodl
    
  7. Costruire:

    ./configure
    make
    sudo make install
    
  8. Assicurarsi che sia stato aggiornato:

    rsync --version
    

    Uscita campione:

    $ 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. Cerca nelle pagine man "progress2". Ora avrai accesso --info=progress2all'opzione:

    man rsync
    

    ... quindi premere il /tasto e digitare progress2; premere Invio per cercarlo; premi nper la corrispondenza 'n'ext finché non trovi la voce che stai cercando:

    C'è anche --info=progress2un'opzione che genera statistiche basate sull'intero trasferimento, piuttosto che sui singoli file. Utilizzare questo flag senza visualizzare un nome file (ad esempio, evitare -vo specificare --info=name0) se si desidera vedere come sta andando il trasferimento senza scorrere lo schermo con molti nomi. (Non è necessario specificare l' --progressopzione per utilizzare --info=progress2.)

Vedi anche: "Come usare rsync", di Gabriel Staples: https://superuser.com/questions/1271882/convert-ntfs-partition-to-ext4-how-to-copy-the-data/1464264#1464264

Riferimenti parziali:

  1. http://www.beginninglinux.com/home/backup/compile-rsync-from-source-on-ubuntu
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.