Caso contrário, existe algum utilitário alternativo de linha de comando que possa conseguir isso?
fonte
Caso contrário, existe algum utilitário alternativo de linha de comando que possa conseguir isso?
Embora cp
não tenha essa funcionalidade, você pode pv
fazer isso:
pv my_big_file > backup/my_big_file
Nota: este método perderá as permissões e a propriedade do arquivo. Os arquivos copiados dessa maneira terão as mesmas permissões que se você os tivesse criado e pertencerão a você.
Neste exemplo, pv
basicamente apenas envia o arquivo para stdout *, que você redireciona para um arquivo usando o>
operador Simultaneamente, ele imprime informações sobre o progresso no 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%
Pode ser necessário instalar o pv (como alternativa sudo apt-get install pv
) no seu sistema.
*: O bit técnico
Existem três fluxos de dados importantes em um sistema semelhante 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 redirecionamento redireciona a saída do programa para um arquivo. Sem argumentos, como você vê acima, >
redireciona a saída padrão de um programa para um arquivo. cp
basicamente não faz nada mais sofisticado do que
cat source > destination
(onde cat
apenas lê um arquivo e o imprime no stdout). pv
é como cat, mas se você redirecionar o fluxo de saída para outro lugar, ele imprimirá as informações de progresso no stdout.
Dê uma olhada man pv
para saber mais sobre isso.
Outra opção, como sugere o DoR nesta resposta , é usar o rsync:
$ rsync -ah --progress source-file destination-file
sending incremental file list
source-file
621.22M 57% 283.86MB/s 0:00:01
Isso preservará as permissões / propriedade dos arquivos enquanto mostra o progresso.
pv
não manipula permissões da mesma forma quecp
faz ... (com base em um teste rápido eu tentei:pv
não copiar o bit de execução em toda ..rsync
. Fezalias cp="rsync -avz"
cp está desatualizado.pv
, pode bisbilhotar/proc/PID of cp/fd
e/proc/PID of cp/fdinfo
descobrir o progresso. (Depende de você inferir velocidade.) Eu uso essa técnica para assistirupdatedb
.-z
provavelmente só deve ser usado para cópias em rede; compactar e descompactar os dados para uma cópia local é pura sobrecarga.rsync
certifique-se de não adicionar à direita o/
caminho de origem (ou remover se, por exemplo, a conclusão do bash o colocar automaticamente). Caso contrário, você obterá resultados diferentes dos do usocp
(ougcp
).Não existe. Veja aqui o porquê. Embora faça mais do que você precisa,
rsync
possui um--progress
parâmetro O-a
manterá permissões, etc, e-h
será legível por humanos.A saída será mais ou menos assim:
fonte
-r
sinalizador para recursar diretórios. Pode até ser um alias como um substituto direto para cp:alias cp="rsync -ah --progress"
--progress
faz minha cabeça girar 🙃, observando toda a saída exibida no terminal. Portanto, aqueles que vêm aqui das pesquisas de palavras-chave da AOLrsync -ah --info=progress2 [source] [destination]
apresentam a saída de uma maneira um pouco mais saudável IM️ IMHO.Se você deseja ver se seus arquivos estão sendo transferidos corretamente, você pode usar
gcp
egcp
é como o cp, mas, por padrão, fornece uma barra de progresso para que você possa ver o que está sendo copiado. Como observa o wiki do programa ,gcp
possui vários recursos úteis, comoNo entanto, mesmo quando a barra de progresso atingiu 100% ao usar a ferramenta, você deve esperar até que o prompt do terminal reapareça antes de remover a mídia com segurança, para garantir que o processo de transferência tenha sido concluído com êxito.
gcp
é usado para copiar arquivos e tem opções como,--preserve
para que vários atributos e permissões possam ser preservados e--recursive
para que diretórios inteiros possam ser copiados. Mais informações sobre suas opções podem ser encontradas entrandoman gcp
ou acessando as páginas de manual do Ubuntu online . Um tutorial também está disponível neste site .Instale a
gcp
partir dos repositórios com( Nota : no Ubuntu 12.10, o novo ponto de montagem automática é, por exemplo
/media/user/usbdisk
)Você pode copiar um arquivo para sua mídia digitando
e copie uma pasta para sua mídia com
Exemplo de saída
gcp
com a barra de progresso:Obviamente, você pode especificar vários arquivos ou pastas para copiar para o seu disco, e há muitas outras opções abordadas
man gcp
.fonte
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
export DISPLAY=:0.0
antes de iniciar o gcp. Se a máquina está sem cabeça, então você teria que começar um xsession em um framebuffer virtual ou algo, nesse ponto você provavelmente deve apenas olhar para outro programagcp
é bastante decente, mas o requisito DBUS / X é estranho. Eu lidei com isso através do SSH usando o encaminhamento ssh:ssh -X user@host
e isso me permitiu executá-lo.Eu recebo o pontapé do uso do cURL para esse fim exato. A página de manual lista o protocolo "FILE" como suportado; portanto, use-o como qualquer outro protocolo em um URL:
Velocidade, progresso, tempo restante e muito mais - tudo em um formato familiar.
fonte
pv
, que não irá poupar permissões.Embora não exiba velocidade, ao copiar vários arquivos, a
-v
opção docp
comando fornecerá informações sobre o andamento. por exemplofonte
O kernel conhece a maioria dos dados, como velocidade, e geralmente também porcentagem. Os kernels modernos expõem isso por meio do sistema de arquivos / proc.
showspeed de https://github.com/jnweiger/showspeed usa essas informações. Ele pode ser anexado a programas já em execução e fornecer atualizações periódicas como esta:
fonte
pkill -USR1 dd
paradd
mostrar o status, outra opção seriawatch -n 1 pkill -USR1 dd
mostrar o progresso periodicamente (a cada segundo).Existe uma ferramenta chamada
progress
nos repositórios que é capaz de examinar vários comandos diferentes e exibir informações de progresso para eles.Instale-o usando o comando
Essa ferramenta pode ser usada assim:
Resultado:
fonte
Embora
pv
possa lidar comcp
tarefas locais , o usodd
compv
pode lidar com tarefas locais (cp
) e remotas (scp
).Garanta as
path/to/dest.mkv
saídas portouch path/to/dest.mkv
Isso pode mostrar o progresso, mas se você quiser as informações de porcentagem,
Substituir
100M
acima pelo tamanho real do seu arquivo de origem.Aqui vem a parte remota
Embora
scp
dificilmente possa mostrar o progresso atual, usardd
compv
é um pedaço de bolo.fonte
dd
temstatus=progress
: askubuntu.com/a/824895/52975Existe uma nova ferramenta chamada cv que pode encontrar qualquer descritor relacionado a um comando em execução e mostrar progresso e velocidade: https://github.com/Xfennec/cv
gera estatísticas para todas as operações cp, mv etc. em execução
fonte
watch cv -q
é ainda mais purocp
está copiando um diretório recursivamente ou não.Como muitos disseram, o cp não inclui essa funcionalidade.
Apenas para jogar meus US $ 0,02, o que eu costumo fazer com situações triviais de cópia (ou seja, não
-R
):Veja o tamanho do arquivo e lembre-se
Comece a copiar
Abra outro terminal
Execute
watch ls -lh DIR
no diretório em que o destino estáIsso pode me manter atualizado sobre o tamanho do arquivo de destino, com um mínimo de problemas.
Como alternativa para situações menos triviais, como copiar diretórios recursivamente, você pode usar
watch du -hs DIR
para ver um resumo do tamanho do DIR. No entanto, du pode levar muito tempo para calcular e pode até atrasar a cópia, portanto, você pode querer usar-n INTERVAL
argumento para assistir para que o trade-off seja aceitável.Atualização: Caso você use curingas com o comando usado no watch du, por exemplo
watch du -hs backup/*
, não esqueça de citar:caso contrário, os curingas serão expandidos apenas uma vez , quando o relógio for iniciado, para que o du não veja novos arquivos / subdiretórios.
fonte
dd status=progress
Opção adicionada no GNU Coreutils 8.24+ (Ubuntu 16.04):
O terminal mostra uma linha do tipo:
Veja também: Como você monitora o progresso do dd?
fonte
Se você possui o rsync 3.1 ou superior (
rsync --version
), pode copiar (cp -Rpn) enquanto preserva permissões e propriedade, recursa diretórios "no clobber" e exibe o progresso geral (em vez de apenas o progresso por arquivo), a taxa de cópia e ( muito aproximado) tempo estimado restante com:Note que o sudo é necessário apenas se você lida com diretórios / arquivos que você não possui. Além disso, sem o
--no-i-r
, a porcentagem pode redefinir para um número menor em algum momento durante a cópia. Talvez as versões posteriores do rsync sejam padronizadas como no-ir com info = progress2, mas não na versão atual do 3.1.2.Eu descobri que a porcentagem e o tempo restante são superestimados ao copiar para um diretório que já contém arquivos (ou seja, como quando você usaria cp -n "no clobber").
fonte
Use um script de shell:
Será parecido com:
Fonte
fonte
Dependendo do que você deseja fazer, Midnight Commander (
mc
) pode ser a resposta. Estou surpreso que ainda não tenha sido mencionado.Ferramentas como
pv
oursync
são boas para exibir o progresso da transferência de um arquivo enorme, mas quando se trata de copiar diretórios / árvores inteiros,mc
calcula o tamanho e exibe o progresso muito bem. Além disso, está disponível imediatamente na maioria dos sistemas.fonte
mais uma opção para preservar atributos (se
source
for uma pasta na qual ela será criadadestination
)espero que possa ser útil para alguém. Para estimar o tempo de transferência, é possível obter isso
do -s source
antecipadamente e passando como-s <size>
parâmetro parapv
.fonte
-f -
é redundante.tar
A saídac
e entradax
padrão de são stdout e stdin.Você pode copiar usar qualquer programa. Ao mesmo tempo, você pode iniciar
sudo iotop
e ver a velocidade de leitura / gravação do disco, sem progresso.fonte
Verifique o código fonte para progress_bar no repositório git abaixo
https://github.com/Kiran-Bose/supreme
Experimente também o pacote de scripts bash customizado supremo
Baixe o arquivo deb e instale na distribuição baseada em debian ou baixe os arquivos de origem, modifique e use para outras distribuições
Visão geral da funcionalidade
(1) Aplicativos abertos ---- Firefox ---- Calculadora ---- Configurações
(2) Gerenciar arquivos ---- Pesquisar ---- Navegar ---- Acesso rápido
(3) Gerenciar telefone ---- Mover / copiar do telefone ---- Mover / copiar para o telefone ---- Sincronizar pastas
(4) Gerenciar USB ---- Mover / Copiar de USB ---- Mover / Copiar para USB
fonte
pv sabe como assistir descritores de arquivo dados um pid, seja cp ou outra coisa
A partir da documentação:
Exemplo:
fonte