I'm copying a large amount of files between disks. There's approximately 16 GB of data. I'd like to see progress information, and even an estimated time of completion from the command line.
Any advice?
-
Use
rsync --human-readable --progress.For single files and block devices there's also
pv. And if you genuinely need an accurate progress bar, try usingtarwith pv — something like this: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; }Be warned, however, that GNU
tardoes not yet support ACLs or extended attributes, so if you are copying filesystems mounted with the "acl" or "xattrs" options, you need to use rsync (with the "--acls" and "--xattrs" options). Personally, I use:rsync --archive --inplace --hard-links --acls --xattrs --devices --specials \ --one-file-system --8-bit-output --human-readable --progress /source /targetAlso look into whether you want to use the
--deleteand/or--numeric-idsoptions.alex : Was posting that. However, be aware that it doesn't provide a reliable "progress over total copy time". However, rsync brings many benefits to this kind of stuff.From Teddy -
Have you tried
rsync -P? If you're usingdd, e.g.tar -cf - src | dd | (cd dest; tar -xf -)you should be able to use Ctrl-T (SIGINFO) to see your progress.Teddy : Linux doesn't even have `SIGINFO`.Jeremy Visser : When copying with `dd` I send SIGUSR1 to `dd` instead to cause it to print the statistics. A simple `killall -USR1 dd` will do the job. (Which works on Linux, even if, as Teddy points out, Ctrl+T doesn’t work.)From Gerald Combs -
instead of
ddi would suggest 'pv':
% tar -cf - INPUT | pv -rbe -s SIZE | tar -xf - -C DESTFrom akira
0 comments:
Post a Comment