cp não tem essa opção. Você poderia escrever um script wrapper, mas é bem simples.
ln -f $^ $@ 2>/dev/null || cp -f $^ $@
O GNU Coreutils 7.5 introduziu a opção --reflink . Se você passar --reflink=auto e o sistema de arquivos subjacente suportar copy-on-write (por exemplo, Btrfs ou ZFS) e a cópia estiver no mesmo dispositivo, então cp criará um novo inode, mas não copiará o conteúdo; caso contrário, cp executará uma cópia normal. Este ainda não é um link físico (o alvo será sempre um inode diferente), mas provavelmente é ainda melhor para o seu caso de uso. No entanto, se você estiver no ext4 (como a maioria das pessoas hoje em dia), que não suporta copy-on-write, isso não irá ajudá-lo.