cp
coreutils の一部であるため、どこにでも存在します。さらに、主に 1 台のコンピューター内でファイルをコピーするように設計されています。
rsync
coreutils の一部ではなく、デフォルトの環境にも存在しません。主にネットワーク経由でファイルを転送するために設計されました。また、rsync は coreutils と比較して依存関係が多くありますが、この違いは大きな意味を持ちません。
rsync と比較した cp の主な利点は、時間と CPU 使用量が少ないことです。
参照ここ、ここ、ここ、ここ、ここそしてここ