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.3MB
où 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 gzip
et bzip2
ne 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 xz
pour 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=hc4
et des --memory=2G
options; mais dict=128M
définissez le dictionnaire pour qu'il soit suffisamment grand (plus grand qu'un fichier) et mode=fast
accélérez le processus plus rapidement que -e
.
xz -1 --memory=2G
n'a pas aidé, testé sur 2 et 4 fichiers de l'ensemble.