J'ai des centaines de gros fichiers similaires (30 mégaoctets chacun) que je veux compresser. Chaque paire de fichiers contient 99% des mêmes données (moins de 1% de différence), donc je m'attends à ne pas avoir plus de 40 à 50 mégaoctets d'archives.
Un seul fichier peut être compressé de 30 Mo à 13-15 Mo (avec xz -1, gz -1, bzip2 -1), mais lors de la compression deux ou plusieurs fichiers que je veux avoir des archives avec la taille 13-15MB + N*0.3MBoù N est le nombre de fichiers.
Lorsque j'utilise tar(pour créer une archive solide) et xz -6(pour définir un dictionnaire de compression comme étant plus grand qu'un fichier - Mise à jour - cela ne suffisait pas! ), J'ai toujours une archive de taille N*13MB.
Je pense que les deux gzipet bzip2ne m'aideront pas car ils ont un dictionnaire de moins de 1 Mo, et mon flux tar a des répétitions tous les 30 Mo.
Comment puis-je archiver mon problème sous Linux moderne en utilisant des outils standard?
Est-il possible de régler xzpour compresser rapidement, mais utiliser un dictionnaire de plus de 30 à 60 Mo?
Mise à jour : a fait l'affaire avec tar c input_directory | xz --lzma2=dict=128M,mode=fast,mf=hc4 --memory=2G > compressed.tar.xz. Pas sûr de la nécessité mf=hc4et des --memory=2Goptions; mais dict=128Mdéfinissez le dictionnaire pour qu'il soit suffisamment grand (plus grand qu'un fichier) et mode=fastaccélérez le processus plus rapidement que -e.
xz -1 --memory=2Gn'a pas aidé, testé sur 2 et 4 fichiers de l'ensemble.