O Terminal exibirá uma barra de progresso quando copiar com "cp"?

33

É possível exibir uma barra de progresso ao copiar arquivos no Terminal usando o cp?

daviesgeek
fonte
2
... você também pode considerar o uso rsync.
Asmus
Existe uma maneira de fazer isso com uma barra de progresso geral sem instalar ferramentas de terceiros? Talvez um script ou algo assim?
precisa saber é o seguinte

Respostas:

49

Você pode usar o rsync.

rsync --progress /copy/from /copy/to
bahamat
fonte
1
Speedwise, que é mais rápido, rsync ou cp?
Daviesgeek
Se todos os arquivos copiados não existirem no destino, acho que não haverá uma diferença perceptível. Se alguns dos arquivos existirem no destino, isso variará porque o rsync faz alguma verificação. O Rsync geralmente (mas nem sempre) será mais rápido nesse caso.
bahamat
2
O uso rsync -P /copy/from /copy/toé equivalente ao rsync --partial --progress /copy/from /copy/toque exibirá o progresso da cópia, além de retomar a transferência se ela estiver desconectada.
precisa saber é o seguinte
E, assim como o cp, ele precisa da -rbandeira para não pular diretórios
Alexander - Restabelecer Monica
21

Durante cp, CtrlTexibe a porcentagem atual (pelo menos no macOS)

Vamos
fonte
Fantástico!
Felix021 13/0618
1
A razão pela qual isso funciona é porque Ctrl-tenvia SIGINFOsinais da mesma maneira que Ctrl-cenvia SIGINTsinais. Você pode, por exemplo, usar um loop em outro shell para repetidamente kill -INFOo processo em questão, se não quiser continuar pressionando as teclas. Por ser um sinal, ele também funciona com outros utilitários, por exemplo dd. Ctrl-te SIGINFOsão herdados do BSD.
HTNW 03/09/19
1

Se você estiver copiando arquivos grandes ou diretórios usando o cp, poderá abrir o 'Activity Monitor', ir para a guia 'Disk' e procurar o processo 'cp'. Aqui você pode acompanhar quantos bytes foram gravados desde a última inicialização, fornecendo uma idéia aproximada do progresso. (OS X 10.10).

Espero que ajude!

Franz
fonte
0
#!/bin/sh
   strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
      | awk '{
        count += $NF
            if (count % 10 == 0) {
               percent = count / total_size * 100
               printf "%3d%% [", percent
               for (i=0;i<=percent;i++)
                  printf "="
               printf ">"
               for (i=percent;i<100;i++)
                  printf " "
               printf "]\r"
            }
         }
         END { print "" }' total_size=$(stat -c '%s' "${1}") count=0

Não é perfeito, mas funciona ... coloque isso em um caminho de diretório e dê um nome semelhante.

Essobi
fonte
Espere ... como faço para que isso funcione ???
daviesgeek
2
Não me lembro se o OS X tinha um stracecomando no momento em que essa resposta foi escrita (julho de 2011), mas definitivamente não existe hoje.
Tim Ruddick
Alguma idéia de como executar isso no macOS?
rraallvv