Jak używać 7z do kompresji za pomocą rury?

16

Używam tego do bezpiecznego tworzenia kopii zapasowych (? - czy to naprawdę bezpieczne? Z dobrym hasłem?):

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

P: Ale jak mogę to zrobić za pomocą 7z z maksymalnym współczynnikiem kompresji?

Tworzenie plików tymczasowych poza jedynym plikiem WYJŚCIOWYM nie jest dobre, ponieważ gdybym musiał skompresować pliki / katalogi o wielkości ~ 100 GB w systemie FS 180 GB, nie miałbym wystarczającej ilości wolnego miejsca (gdyby np .: skompresowany plik zająłby ~ 60 GByte).

Gasko Peter
źródło

Odpowiedzi:

6

Czy istnieje powód, dla którego chcesz użyć 7zkonkretnie lub po prostu chcesz lepszej kompresji niż gzip?

xzNarzędzie wykorzystuje ten sam algorytm kompresję 7z(LZMA) i pozwala rurami sprężania samo jak gzip.

tar cvf ... | xz -9 | openssl ...
David Baggerman
źródło
Powodem, dla którego osobiście potrzebowałem konkretnie 7z, jest możliwość podzielenia się na wiele tomów
Unirgy
1
XZ nie wielowątkowy w tym czasie (nie może być jeszcze) tak, na komputerze wielożyłowego może być dużo mniejsza niż 7z
Xen2050
25

Jest to opisane na stronie podręcznika 7z:

-si    Read data from StdIn (eg: tar cf - directory | 7z a -si directory.tar.7z)
Wieland
źródło
Czy mogę wstawić „|” i dalej przetwarzać po 7z?
gasko peter,
4
Możesz użyć -sodo zrzucenia skompresowanych danych na standardowe wyjście zamiast pliku.
Wieland,
1

Aby szybko utworzyć plik przygotowania zdalnej kopii zapasowej wszystkich moich domowych skryptów. Używam:

# 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   

Powodem, dla którego nie tworzę kopii zapasowej „głównego” katalogu głównego jest to, że specjalnie synchronizuję i wysyłam tylko niektóre katalogi. Zauważ, jak cpio będzie pomijać i sprawdzać, czy istnieją nowsze pliki podczas przywracania. To jest potężne. Twoja praca nie zostanie nadpisana.

pączek@

Will Budic
źródło
-1

właśnie pgdumpalluruchomiłem , postgres do pliku 7zip: użyj set pgpassword=xxxxxprzed wydaniem polecenia:

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

zrzucenie go i skompresowanie zajęło tylko 4 dni! 50201104790 bajtów (47 GB)

klmbear
źródło