Cópia de arquivo do Linux com o ETA?

5

Estou copiando uma grande quantidade de arquivos entre discos. Há aproximadamente 16 GB de dados. Gostaria de ver informações sobre o progresso e até um tempo estimado de conclusão na linha de comando .

Algum conselho?

    
por bobby 09.06.2010 / 21:04

3 respostas

7

Use rsync --human-readable --progress .

Para arquivos únicos e dispositivos de bloco, há também pv . E se você realmente precisa de uma barra de progresso precisa, tente usar tar com pv - algo assim:

source=/the/source/directory
target=/the/target/directory
size=$(du -sx "$source")
cd "$source"
find . xdev -depth -not -path ./lost+found -print0 \
    | tar --create --atime-preserve=system --null --files-from=- \
          --format=posix --no-recursion --sparse \
    | pv --size ${size}k \
    | { cd "$target"; \
        tar --extract --overwrite --preserve-permissions --sparse; }

Esteja avisado, no entanto, que o GNU tar ainda não suporta ACLs ou atributos estendidos, portanto, se você estiver copiando sistemas de arquivos montados com as opções "acl" ou "xattrs", será necessário usar o rsync (com o " --acls "e" --xattrs "opções). Pessoalmente, eu uso:

rsync --archive --inplace --hard-links --acls --xattrs --devices --specials \
    --one-file-system --8-bit-output --human-readable --progress /source /target

Verifique também se você deseja usar as opções --delete e / ou --numeric-ids .

    
por 09.06.2010 / 21:20
4

Em vez de dd , sugiro pv , por exemplo:

% tar -cf - INPUT | pv -rbe -s SIZE | tar -xf - -C DEST 
    
por 09.06.2010 / 22:07
2

Você já tentou rsync -P ? Se você estiver usando dd , por exemplo tar -cf - src | dd | (cd dest; tar -xf -) você deve poder usar Ctrl-T (SIGINFO) para ver seu progresso.

    
por 09.06.2010 / 21:21