i wish i could make this into a neat script, my attempt at writing a bash script for this mangles the result and places the whole path prefix into the output in the script, but on the CLI it works;
tar c Downloads|pv -s `du -d0 --total -b Downloads|grep total|cut -f1`|tar x -C /run/media/me/seagate1tb/
this tars up the Downloads folder, keeping track of how big it will be and how long it will take, and dropping it back out in the destination location.
i'm all on board with the unix philosophy of making small, pluggable things and attaching them together as pipes but this is such a frequently needed operation it really should have its own variant. it would be 'not posixly correct' to add it to cp, probably, damned prime real estate those unix shell command names.
if i had all the time in the world i'd make a much nicer set of tools for these jobs. but then i'd forget how to use them if i didn't keep them precious on my system so i don't have to revert back to the baseline every time.