Come usare 7z per comprimere tramite pipe?


16

Lo sto usando per creare backup in modo sicuro (? - è davvero sicuro? Con una buona password?):

# 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 -

D: Ma come posso farlo usando 7z con il massimo tasso di compressione?

La creazione di file temporanei oltre al solo file OUTPUT non va bene, perché se dovessi comprimere file / directory di dimensioni ~ 100 GByte su un FS da 180 GByte non avrei abbastanza spazio libero (se es .: il file compresso richiederebbe ~ 60 GByte).

Risposte:


6

C'è un motivo che vuoi usare in modo 7zspecifico o vuoi solo una compressione migliore di gzip?

L' xzutilità utilizza lo stesso algoritmo di compressione di 7z(LZMA) e consente la compressione convogliata come gzip.

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

Il motivo per cui ho avuto bisogno personalmente di 7z è la possibilità di suddividere in più volumi
Unirgy

1
xz non era multi-thread al momento (potrebbe non essere ancora) quindi su un computer multi-core potrebbe essere molto più lento di 7z
Xen2050

25

Questo è coperto nella pagina man di 7z:

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

Posso mettere un "|" e l'ulteriore elaborazione dopo il 7z?
Gasko Peter,

4
È possibile utilizzare -soper eseguire il dump dei dati compressi su stdout anziché su un file.
Wieland,

1

Per creare rapidamente un file di preparazione del backup remoto di tutti i miei script domestici, utilizzo quanto segue:

# 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   

Il motivo per cui non eseguo il backup della mia radice 'home' è che sincronizzo in modo specifico e invio solo alcune directory. Nota come cpio salterà e verificherà la presenza di file esistenti più recenti al ripristino. Questo è potente Il tuo lavoro non verrà sovrascritto.

germoglio@


-1

appena fatto funzionare, postgres pgdumpallin un file 7zip: usare set pgpassword=xxxxxprima di emettere il comando:

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

ci sono voluti solo 4 giorni per scaricarlo e comprimerlo! 50201104790 byte (47 GB)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.