Especially if you use a copy-on-write filesystem like BTRFS or ZFS, rsync
is much better.
I use BTRFS, and I have this in my ~/.bashrc
:
alias cp="rsync -ah --inplace --no-whole-file --info=progress2"
The important flag here for CoW FSs like BTRFS is --inplace
because it only copies the changed part of the files, doesn't create new for small changes between files inodes, etc. See this.