informações sobre progresso via pv para cópia do diretório

12

Eu preciso copiar um diretório muito grande (falando em terabytes aqui) e quero monitorar o progresso.

Descobri que pv é um bom utilitário, mas como posso usá-lo para copiar diretórios recursivamente? ( pv src > dst não funciona porque são diretórios)

PS: rodando no OS X Mountain Lion, o pv foi instalado a partir do Mac Ports

    
por Florian Peschka 18.11.2012 / 18:29

6 respostas

20

Use rsync --progress [SRC] [DST]

Verifique a página man rsync porque ela possui muitas opções muito úteis. -a para o arquivo é um bom começo, mas depende dos seus requisitos exatos.

Copiar através de um canal irá desacelerar desnecessariamente o processo de cópia, especialmente se for baseado em arquivos.

    
por 18.11.2012 / 18:54
10

Você pode usar tar ou pax ou cpio :

mkdir -p dst &&
  (cd src && tar cf - .) | pv -trb | (cd dst && tar xpf -)
    
por 18.11.2012 / 18:52
1

Tar.

tar -cf - /var/log/ | pv | tar -C . -x

Exemplo:

# tar -cf - /var/log/ | pv | tar -C . -x
tar: Removing leading '/' from member names
58MB 0:00:05 [ 2.2MB/s] [                   <=> 
    
por 27.01.2014 / 18:29
1

Aqui estão alguns comandos para copiar diretórios com informações de progresso.

Se houver muitos arquivos pequenos:

cp -av sourcedir targetdir | pv -l -s filecount > logfile

Isso relatará o progresso com base no número de arquivos copiados.

Você pode redirecionar para /dev/null se não precisar de logfile .

Use o seguinte comando para obter filecount :

find sourcedir | wc -l

Se houver poucos arquivos grandes:

tar c sourcedir | pv -s size | tar x -C targetdir

Isso relatará o progresso com base nos bytes copiados.

targetdir deve existir.

Use o seguinte comando para obter size :

du -sh sourcedir

Se você quiser usar o rsync:

rsync -ai sourcedir/ targetdir/ | pv -l -s filecount > logfile

Obtenha filecount como mostrado acima.

Se você estiver copiando no mesmo sistema, rsync -a será praticamente o mesmo que cp -a . As vantagens do rsync é quando você está copiando através da rede ou se está atualizando (ou comparando) uma cópia anterior.

Veja aqui para mais detalhes:

por 11.12.2016 / 12:42
0

Você pode fazer um du -b /directory/ na origem e no destino enquanto um comando de cópia normal está em andamento e comparar os dois. Isso é tão eficaz quanto não atrasa o processo de cópia, empurrando-o por um cano.

    
por 29.12.2014 / 03:11
-1
find source-dir -print0 | xargs -0 -I % pv % > dest-dir/%
    
por 27.01.2014 / 02:20