Se o arquivo for pequeno o suficiente, a maioria dos formatos de arquivo fará um trabalho decente, com exceção do zip. O Zip compacta cada arquivo de forma independente, mas outros formatos populares (tar.anything, 7z, rar) compactam o arquivo como um todo. Se arquivos idênticos estiverem próximos o suficiente no arquivo, a segunda ocorrência pode ser compactada em alguns bytes. O quão perto está "perto o suficiente" depende do formato do arquivo.
Um método que funciona para qualquer arquivador que entende links físicos, como o tar, é substituir primeiro os arquivos idênticos por links físicos. Isso só é aplicável se você não quiser que os arquivos com conteúdo duplicado tenham metadados diferentes (permissões, registros de data e hora, etc.). Você usa fdupes para procurar duplicatas e, em seguida, um pouco de pós-processamento para substituir duplicatas por links físicos, supondo que os nomes dos arquivos não sejam não contém novas linhas:
fdupes -q -r . | awk '
$0 == "" {first = ""; next}
{
gsub(/7/, "7\77", $0);
if (first == "") first = $0;
else system("ln -f 7" first "7 7" $0 "7");
}'