cpio (o mais antigo dos dois utilitários contando o envio com UNIX) costumava ter suporte de link físico para a opção -p (ou seja, copiando do sistema de arquivos para o sistema de arquivos), mas o formato de saída newc padrão um cpio uses) também suporta hard links no arquivo de saída.
(% GNU) tar suporta links físicos sem nenhuma opção especial. Uma comparação pode ser encontrada aqui .
Então, se você executar um teste com um arquivo grande e vinculado e 100 arquivos pequenos:
$ mkdir tmp
$ dd if=/dev/urandom of=tmp/blabla bs=1k count=1024
1024+0 records in
1024+0 records out
1048576 bytes (1,0 MB) copied, 0,0764345 s, 13,7 MB/s
$ ln tmp/blabla tmp/hardlink
$ tar cvf tmp.tar tmp
$ find tmp -print0 | cpio -0o > out.cpio
4104 blocks
$ find tmp -print0 | cpio -0o --format=newc > outnewc.cpio
2074 blocks
$ xz -9k out.tar outnewc.cpio
$ bzip2 -9k out.tar outnewc.cpio
$ ls -l out*
-rw-rw-r-- 1 anthon users 2101248 Nov 23 12:30 out.cpio
-rw-rw-r-- 1 anthon users 1061888 Nov 23 12:30 outnewc.cpio
-rw-rw-r-- 1 anthon users 1055935 Nov 23 12:30 outnewc.cpio.bz2
-rw-rw-r-- 1 anthon users 1050652 Nov 23 12:30 outnewc.cpio.xz
-rw-rw-r-- 1 anthon users 1157120 Nov 23 12:30 out.tar
-rw-rw-r-- 1 anthon users 1055402 Nov 23 12:30 out.tar.bz2
-rw-rw-r-- 1 anthon users 1050928 Nov 23 12:30 out.tar.xz
Você vê que as versões não compactadas ( outnewc.cpio e out.tar ) dão ao cpio uma vantagem e que compactá-las com xz -9 fornece resultados melhores que bzip2 -9 ( gzip é geralmente muito pior que qualquer um). E essa compactação com xz minimiza a tar e a cpio diferença de saída . No entanto, a compactação depende muito dos dados e também da ordenação dos dados nos arquivos, portanto você deve realmente testar isso (uma amostra de) seus dados reais.
Se você quiser compactar em paralelo, consulte o meu artigo aqui