Copia da shell, percentuale avanzamento

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
wakkokid
Linux 2.x
Linux 2.x
Messaggi: 339
Iscritto il: gio 27 gen 2005, 0:00
Kernel: 2.6.3*
Desktop: Kde4
Distribuzione: Debian
Contatta:

Copia da shell, percentuale avanzamento

Messaggio da wakkokid »

Salve,
Spesso mi trovo a copiare file da più di un giga e per mia natura preferisco farlo da console.
Il problema è che con il comando "cp" non ho (=non conosco) il modo di verificare l'avanzamento dell'operazione. Cercando su google ho trovato diversi script che creavano una sorta di barra di avanzamento... possibile che non ci sia un programma pulito pulito che mostri senza tanti "giri" attraverso awk/strace/ecc... l'avanzamento della copia? Non chiedo una progress bar con indicatore di velocità e "predizione" del tempo rimanente! Basta un semplice numeretto a due cifre che indichi la percentuale dell'operazione compiuta, tutti i tool grafici lo fanno, e anche i tool da console tipo mc, possibile che qui la shell sia più carente dei tool grafici? Non credo, dev'essere solo la mia ignoranza :oops:

Vi ringrazio.

Avatar utente
aschenaz
Staff
Staff
Messaggi: 4623
Iscritto il: mer 28 lug 2004, 0:00
Nome Cognome: Nino
Slackware: current
Kernel: 5.4.x
Desktop: KDE
Località: Reggio Calabria
Contatta:

Re: Copia da shell, percentuale avanzamento

Messaggio da aschenaz »

Non sono semplici come li vorresti, ma ci sono questi script:
http://www.theiling.de/projects/bar.html
http://chris-lamb.co.uk/2008/01/24/can- ... like-wget/

Personalmente non li ho provati...

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: Copia da shell, percentuale avanzamento

Messaggio da Mario Vanoni »

wakkokid ha scritto: Spesso mi trovo a copiare file da più di un giga e per mia natura preferisco farlo da console.
Il problema è che con il comando "cp" non ho (=non conosco) il modo di verificare l'avanzamento dell'operazione.
Non chiedo una progress bar con indicatore di velocità e "predizione" del tempo rimanente!
Basta un semplice numeretto a due cifre che indichi la percentuale dell'operazione compiuta,
Per una percentuale devi prima sapere quanto vuoi copiare, quindi al minimo un wc -c *
con GB gia` perdi tempo, poi calcolare la progressione, altro tempo.

Non e` lo stile UNIX, ma se ti basta una progressione visibile:

cd /dir_di_partenza
ls [-a] | cpio -pmV /dir_di_arrivo
se servono anche le sotto directories
find | cpio -pdmV /dir_di_arrivo

la progressione consiste in punti (......................................)

io lo faccio ancora piu` verbose
cd /dir_di_partenza
find | cpio -pdmv /dir_di_arrivo

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Re: Copia da shell, percentuale avanzamento

Messaggio da masalapianta »

wakkokid ha scritto:Salve,
Spesso mi trovo a copiare file da più di un giga e per mia natura preferisco farlo da console.
Il problema è che con il comando "cp" non ho (=non conosco) il modo di verificare l'avanzamento dell'operazione. Cercando su google ho trovato diversi script che creavano una sorta di barra di avanzamento... possibile che non ci sia un programma pulito pulito che mostri senza tanti "giri" attraverso awk/strace/ecc... l'avanzamento della copia? Non chiedo una progress bar con indicatore di velocità e "predizione" del tempo rimanente! Basta un semplice numeretto a due cifre che indichi la percentuale dell'operazione compiuta, tutti i tool grafici lo fanno, e anche i tool da console tipo mc, possibile che qui la shell sia più carente dei tool grafici? Non credo, dev'essere solo la mia ignoranza :oops:

Vi ringrazio.
una cosa del genere?

Codice: Seleziona tutto

#!/bin/bash

if [ -z $2 ]; then
        echo "usage: $0 [file da copiare] [file dove copiarlo (ci vuole pure il nome del file non solo la directory di destinazione)]"
        exit 1
fi

from="$1"
to="$2"
cp $from $to &
sleep 0.5
sizefrom=`du -b $from|awk '{print $1}'`
upc=`echo "$sizefrom/100"|bc`
while [ "$sizefrom" != `du -b $to|awk '{print $1}'` ]; do
        tmpsize=`du -b $to|awk '{print $1}'`
        tmp=`echo "$tmpsize/$upc"|bc`
        echo -e "\r $tmp %  \c"
        sleep 0.5
done

Avatar utente
wakkokid
Linux 2.x
Linux 2.x
Messaggi: 339
Iscritto il: gio 27 gen 2005, 0:00
Kernel: 2.6.3*
Desktop: Kde4
Distribuzione: Debian
Contatta:

Re: Copia da shell, percentuale avanzamento

Messaggio da wakkokid »

Mario Vanoni ha scritto:
wakkokid ha scritto: Per una percentuale devi prima sapere quanto vuoi copiare, quindi al minimo un wc -c *
con GB gia` perdi tempo, poi calcolare la progressione, altro tempo.
Giusto... il motivo c'è, non ci avevo pensato.

Adesso provo un po' gli script che avevo trovato e quelli che mi avete gentilmente proposto.
Ringrazio tutti.

Avatar utente
davide77
Linux 2.x
Linux 2.x
Messaggi: 359
Iscritto il: mar 26 apr 2005, 0:00
Desktop: xfce
Distribuzione: XUbuntu
Località: Bergamo

Re: Copia da shell, percentuale avanzamento

Messaggio da davide77 »

Per alcuni tipi di copia io di solito uso rsync, indica la progressione della copia e, in caso di errori, ti permette di riprendere dal punto di interruzione ( = non ricopia tutto quello che ha già copiato).

Unico svantaggio, di non poco conto, è l'utilizzo di cpu, molto alto (per mia esperienza un pc a più di 1GHz non da problemi) rispetto a cp, però è molto più flessibile di cp in alcune situazioni.

Rispondi