Як використовувати 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 Гбайт).

Відповіді:


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)

Чи можу я поставити "|" і далі обробляти його після 7z?
gasko peter

4
Ви можете використовувати -soдля скидання стислих даних на stdout замість файлу.
Віланд

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 Гб)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.