[fdupes][1]fdupes can do this. From man fdupes:
Searches the given path for duplicate files. Such files are found by comparing file sizes and MD5 signatures, followed by a byte-by-byte comparison.
In Debian or Ubuntu, you can install it with apt-get install fdupes. In Fedora/Red Hat/CentOS, you can install it with yum install fdupes. On Arch Linux you can use pacman -S fdupes, and on Gentoo, emerge fdupes.
To run a check descending from your filesystem root, which will likely take a significant amount of time and memory, use something like fdupes -r /.
As asked in the comments, you can get the largest duplicates by doing the following:
fdupes -r . | {
while IFS= read -r file; do
[[ $file ]] && du "$file"
done
} | sort -n
This will break if your filenames contain newlines.