Comment utiliser 7z pour compresser via un tuyau?


16

J'utilise ceci pour créer des sauvegardes en toute sécurité (? - est-ce vraiment sécurisé? Avec un bon mot de passe?):

# ENCRYPT
ORIGDIR="DIRECTORYNAMEHERE"; tar cvf - "${ORIGDIR}/" 2>/dev/null | gzip -9 - 2>/dev/null | openssl aes-256-cbc -salt -out "${ORIGDIR}.tar.gz.aes"

# DECRYPT
openssl aes-256-cbc -d -salt -in "ENCDIRECTORYNAMEHERE" | tar -xz -f -

Q: Mais comment puis-je faire cela en utilisant 7z avec un taux de compression maximum?

La création de fichiers temporaires en plus du seul fichier OUTPUT n'est pas bonne, car si j'ai besoin de compresser ~ 100 Go de fichiers / répertoires de taille sur un FS de 180 Go, je n'aurais pas assez d'espace libre (si ex.: Le fichier compressé prendrait ~ 60 GByte).

Réponses:


6

Y a-t-il une raison que vous souhaitez utiliser 7zspécifiquement, ou voulez-vous simplement une meilleure compression que gzip?

L' xzutilitaire utilise le même algorithme de compression que 7z(LZMA) et autorise la compression canalisée de la même manière que gzip.

tar cvf ... | xz -9 | openssl ...

La raison pour laquelle j'avais personnellement besoin spécifiquement de 7z est la capacité de se diviser en plusieurs volumes
Unirgy

1
xz n'était pas multi-thread à l'époque (ce n'est peut-être pas encore le cas), donc sur un ordinateur multicœur, cela pourrait être beaucoup plus lent que 7z
Xen2050

25

Ceci est couvert dans la page de manuel de 7z:

-si    Read data from StdIn (eg: tar cf - directory | 7z a -si directory.tar.7z)

Puis-je mettre un "|" et poursuivre le traitement après le 7z?
gasko peter

4
Vous pouvez utiliser -sopour vider les données compressées sur stdout au lieu d'un fichier.
Wieland

1

Pour créer rapidement un fichier de préparation de sauvegarde à distance de tous mes scripts personnels, j'utilise ce qui suit:

# Scripts backup
ls ~/*.sh | cpio -ov | 7z a -si ~/Documents/SCRIPT_BACKUP_30062017.cpio.7z
# Scripts restore
7z x -so ~/Documents/SCRIPT_BACKUP_30062017.cpio.7z | cpio -iv   

La raison pour laquelle je ne sauvegarde pas ma racine «home» est que je synchronise spécifiquement et n'envoie que certains répertoires. Remarquez comment cpio ignorera et vérifiera les nouveaux fichiers existants lors de la restauration. C'est puissant. Votre travail ne sera pas écrasé.

bourgeon@


-1

vient de le faire fonctionner, postgres pgdumpalldans un fichier 7zip: utilisez set pgpassword=xxxxxavant d'émettre la commande:

pg_dumpall -U postgres | c:\"program files"\7-Zip\7z.exe a -si e:\directory\output.file.sqlc

il a juste fallu 4 jours pour le faire vider et compresser! 50201104790 octets (47 Go)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.