Embora cp
não tenha essa funcionalidade, você pode usar pv
para fazer isso:
pv my_big_file > backup/my_big_file
Observação: esse método perderá as permissões e a propriedade do arquivo. Os arquivos copiados dessa maneira terão as mesmas permissões que você criou e pertencerão a você.
Neste exemplo, pv
basicamente apenas exibe o arquivo para stdout *, que você redireciona para um arquivo usando o operador >
. Simultaneamente, ele imprime informações sobre o progresso para o terminal quando você faz isso.
Isto é o que parece:
stefano@ubuntu:~/Data$ pv my_big_file > backup/my_big_file
138MB 0:00:01 [73.3MB/s] [=================================>] 100%
Você pode precisar Instalar pv (alternativamente, digite sudo apt-get install pv
) no seu sistema.
*: O bit técnico
Existem três fluxos importantes de dados em um sistema similar ao unix: stdout (saída padrão), stderr (erro padrão) e stdin (entrada padrão). Todo programa tem todos os três, por assim dizer. O operador de pipe redireciona uma saída de programas para outra entrada de programas. O operador >
redireciona uma saída padrão de programas para um arquivo. cp
basicamente não faz nada mais extravagante do que
cat source > destination
(onde cat
apenas lê um arquivo e imprime para stdout). pv
é apenas como cat, mas se você redirecionar seu fluxo de saída para algum outro lugar, ele imprimirá as informações de progresso para stdout.
Dê uma olhada em man pv
para saber mais sobre isso.
Outra opção, como DoR sugere em esta resposta , é usar o rsync:
rsync -ah --progress source-file destination
Isso preservará as permissões / propriedade dos arquivos enquanto exibe o progresso.