Как использовать 7z для сжатия через трубу?

16

Я использую это для безопасного создания резервных копий (? - действительно ли это безопасно? С хорошим паролем?):

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

В: Но как я могу сделать это, используя 7z с максимальной степенью сжатия?

Создание временных файлов, кроме единственного файла OUTPUT, не очень хорошо, потому что если мне нужно сжать файлы / каталоги размером ~ 100 ГБ на FS объемом 180 ГБ, у меня не будет достаточно свободного места (например, сжатый файл займет ~ 60 GByte).

Гаско Питер
источник

Ответы:

6

Есть ли какая-то причина, которую вы хотите использовать 7zспециально, или вы просто хотите лучшее сжатие, чем gzip?

xzУтилита использует тот же самый алгоритм сжатия как 7z(LZMA), а также позволяет водопроводное сжатие таких же , как gzip.

tar cvf ... | xz -9 | openssl ...
Дэвид Баггерман
источник
Причина, по которой мне лично был нужен именно 7z, - это возможность разделить на несколько томов
Unirgy
1
В то время xz не был многопоточным (может быть, еще), поэтому на многоядерном компьютере он мог работать намного медленнее, чем 7z
Xen2050
25

Это описано в справочной странице 7z:

-si    Read data from StdIn (eg: tar cf - directory | 7z a -si directory.tar.7z)
Wieland
источник
Могу ли я поставить "|" и дальше обрабатывать его после 7z?
Гаско Питер
4
Вы можете использовать -soдля сброса сжатых данных на стандартный вывод вместо файла.
Виланд
1

Чтобы быстро создать файл подготовки удаленного резервного копирования всех моих домашних сценариев. Я использую следующее:

# 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   

Причина, по которой я не делаю резервную копию своего «домашнего» корня, заключается в том, что я специально синхронизирую и отправляю только некоторые каталоги. Обратите внимание, как cpio будет пропускать и проверять наличие новых файлов при восстановлении. Это мощно. Ваша работа не будет перезаписана.

бутон@

Уилл Будич
источник
-1

только что заставил его работать, postgres pgdumpallв 7zip файл: используйте set pgpassword=xxxxxперед выдачей команды:

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

потребовалось всего 4 дня, чтобы его сбросили и сжали! 50201104790 байт (47 ГБ)

klmbear
источник