Bagaimana cara menggunakan 7z untuk kompres melalui pipa?

16

Saya menggunakan ini untuk membuat cadangan secara aman (? - apakah benar-benar aman? Dengan kata sandi yang baik?):

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

T: Tapi bagaimana saya bisa melakukan ini menggunakan 7z dengan tingkat kompresi maksimal?

Membuat file sementara selain satu-satunya file OUTPUT tidak baik, karena jika saya perlu kompres ~ 100 GByte file / direktori pada 180 GByte FS saya tidak akan memiliki cukup ruang kosong (jika ex.: File yang dikompresi akan mengambil ~ 60 GByte).

peter gasko
sumber

Jawaban:

6

Apakah ada alasan Anda ingin menggunakan 7zsecara khusus, atau hanya ingin kompresi yang lebih baik gzip?

The xzutilitas menggunakan algoritma kompresi sama dengan 7z(LZMA), dan memungkinkan kompresi pipa sama dengan gzip.

tar cvf ... | xz -9 | openssl ...
David Baggerman
sumber
Alasan saya pribadi membutuhkan 7z secara khusus adalah kemampuan untuk membagi ke beberapa volume
Unirgy
1
xz tidak multi-threaded pada saat itu (mungkin belum) jadi pada komputer multi-core bisa jauh lebih lambat daripada 7z
Xen2050
25

Ini tercakup dalam halaman manual 7z:

-si    Read data from StdIn (eg: tar cf - directory | 7z a -si directory.tar.7z)
Wieland
sumber
Apa boleh saya beri tanda "|" dan selanjutnya memprosesnya setelah 7z?
gasko peter
4
Anda dapat menggunakan -sountuk membuang data yang dikompresi di stdout daripada file.
Wieland
1

Untuk dengan cepat membuat file persiapan pencadangan jarak jauh semua skrip rumah saya. Saya menggunakan yang berikut ini:

# 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   

Alasan saya tidak mencadangkan root 'rumah' saya adalah karena saya secara khusus menyinkronkan dan hanya mengirim beberapa direktori. Perhatikan bagaimana cpio akan melewatkan dan memeriksa file yang lebih baru yang ada di restore. Ini sangat kuat. Pekerjaan Anda tidak akan ditimpa.

tunas@

Will Budic
sumber
-1

baru saja berfungsi, postgres pgdumpallke file 7zip: gunakan set pgpassword=xxxxxsebelum mengeluarkan perintah:

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

hanya perlu 4 hari untuk membuatnya dibuang dan dikompres! 50201104790 byte (47GB)

klmbear
sumber