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?


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

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)


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!


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.