web-dev-qa-db-ja.com

7zを使用してパイプ経由で圧縮する方法は?

安全にバックアップを作成するためにこれを使用しています(?-本当に安全ですか?適切なパスワードを使用していますか?):

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

Q:しかし、最大圧縮率の7zを使用してこれを行うにはどうすればよいですか?

唯一のOUTPUTファイル以外の一時ファイルを作成するのはよくありません。なぜなら、100 GBのサイズのファイル/ディレクトリを180 GBに圧縮する必要がある場合FS十分な空き領域がないためです(ex 。:圧縮されたファイルは約60 GB必要です)。

17
gasko peter

特に7zを使用する理由はありますか、それともgzipよりも優れた圧縮が必要ですか?

xzユーティリティは7z(LZMA)と同じ圧縮アルゴリズムを使用し、gzipと同じパイプ圧縮を許可します。

tar cvf ... | xz -9 | openssl ...
8
David Baggerman

これは7zのmanページでカバーされています:

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

すべてのホームスクリプトのリモートバックアップ準備ファイルをすばやく作成するには、以下を使用します。

# 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がどのようにスキップして新しい既存のファイルをチェックするかに注意してください。これは強力です。あなたの仕事は上書きされません。

bud @

1
Will Budic