como criar barra de progresso durante os arquivos de cópia

0

Eu preciso copiar arquivos enormes em minha máquina Linux.

Exemplo:

cp source.txt target.txt

Eu quero criar um progresso na barra que mostrará a cópia ainda em andamento em cada arquivo de cópia

Exemplos "

cp file file1

copiar arquivo > arquivo1 .........

cp moon mars

copiar lua > marte .......

    
por yael 27.02.2018 / 05:35

2 respostas

3

Em resumo, você não encontrará a funcionalidade nativa cp para a saída da barra de progresso. Por quê? Muitas razões . No entanto, você tem algumas opções:

  1. Use uma ferramenta diferente. rsync , como mencionado por @ user1404316 tem --progress :

    rsync -P largeFile copyLocation
    
  2. Se você não precisar da semântica extra que o cp e rsync cuida, crie um novo arquivo com pv ("Pipe Viewer") redirecionando stdout :

    pv < largeFile > copyLocation
    
  3. Se você precisar precisar da semântica extra, você pode usar progress , embora não dê a barra especificamente. Ele é anexado a processos já em execução , portanto, você o chamaria como:

    # In one shell
    $ cp largeFile copyLocation
    
    # In another shell
    $ progress -m
    [ 4714] cp /home/hunteke/largeFile
            1.1% (114 MiB / 10.2 GiB)      # -m tells progress to continually update
    
  4. Outra opção é gcp , que faz exatamente o que você solicitou com uma barra de progresso:

    gcp largeFile copyLocation
    
  5. Outra opção abusa da capacidade de curl de processar file:// urls:

    curl -o copyLocation file:///path/to/largeFile
    
  6. Você pode escrever um script de shell

por 27.02.2018 / 06:59
1

rsync é um programa de cópia que possui ótimos recursos para copiar arquivos grandes, incluindo um recurso --progress , e possui uma forma de compactação em trânsito para reduzir os dados em trânsito (economizando tempo para a cópia ):

rsync --progress file1 file2

rsync também possui recursos para retomar uma cópia que foi interrompida, talvez devido a uma desconexão da rede. Você precisaria iniciá-lo com as opções --partial --append-verify . A única desvantagem que eu posso pensar em usar rsync para copiar em uma rede é que ela precisa ter sido instalada em ambos os computadores, ie. o remetente e o receptor. Veja sua página man para detalhes e todos os seus outros recursos ...

Se você não pode instalar rsync por algum motivo, ou não quer, uma boa alternativa simples é pv , um comando visualizador de pipe , que faz exatamente o que você é pedindo.

pv from-file > to-file

pv também inclui muitas opções de visualização. Veja sua página man para todos os presentes disponíveis. Aqui estão algumas das opções mais usadas:

-p, --progress
-t, --timer
-e, --eta
-r, --rate
-a, --average-rate
-b, --bytes
    
por 27.02.2018 / 05:46

Tags