Ho centinaia di file simili simili (30 megabyte ciascuno) che voglio comprimere. Ogni coppia di file ha il 99% degli stessi dati (meno dell'1% di differenza), quindi mi aspetto di non avere più di 40-50 megabyte di archivio.
Singolo file può essere compresso da 30 MB a 13-15 MB (con xz -1, gz -1, bzip2 -1), ma quando comprimendo due o più file che voglio avere archivio con dimensioni 13-15MB + N*0.3MBdove N è il numero di file.
Quando uso tar(per creare un archivio solido) e xz -6(per definire un dizionario di compressione più grande di un file - Aggiornamento - questo non era abbastanza! ), Ho ancora un archivio con dimensioni N*13MB.
Penso che entrambi gzipe bzip2non mi aiuteranno perché hanno un dizionario inferiore a 1 MB e il mio flusso tar ha ripetizioni ogni 30 MB.
Come posso archiviare il mio problema in Linux moderno usando strumenti standard?
È possibile sintonizzarsi xzper comprimere velocemente, ma utilizzare un dizionario più grande di 30-60 MB?
Aggiornamento : ha fatto il trucco con tar c input_directory | xz --lzma2=dict=128M,mode=fast,mf=hc4 --memory=2G > compressed.tar.xz. Non sono sicuro del necessario mf=hc4e delle --memory=2Gopzioni; ma dict=128Mimposta il dizionario in modo che sia sufficientemente grande (più grande di un file) e mode=fastrendi il processo un po 'più veloce di -e.
xz -1 --memory=2Gnon ha aiutato, testato su 2 e 4 file dal set.