Utilisez rsync --human-readable --progress .
Pour les fichiers uniques et les périphériques de bloc, il y a aussi pv . Et si vous avez vraiment besoin d'une barre de progression précise, essayez d'utiliser tar avec pv — quelque chose comme ceci :
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; }
Soyez averti, cependant, que GNU tar ne prend pas encore en charge les ACL ou les attributs étendus, donc si vous copiez des systèmes de fichiers montés avec les options "acl" ou "xattrs", vous devez utiliser rsync (avec le "--acls " et "--xattrs " options). Personnellement, j'utilise :
rsync --archive --inplace --hard-links --acls --xattrs --devices --specials \
--one-file-system --8-bit-output --human-readable --progress /source /target
Vérifiez également si vous souhaitez utiliser le --delete et/ou --numeric-ids options.
Au lieu de dd Je suggérerais pv , par exemple :
% tar -cf - INPUT | pv -rbe -s SIZE | tar -xf - -C DEST
Avez-vous essayé rsync -P ? Si vous utilisez dd , par exemple. tar -cf - src | dd | (cd dest; tar -xf -) vous devriez pouvoir utiliser Ctrl-T (SIGINFO) pour voir vos progrès.