Làm thế nào để sử dụng 7z để nén qua đường ống?


16

Tôi đang sử dụng điều này để tạo bản sao lưu an toàn (? - nó có thực sự an toàn không? Với một mật khẩu tốt?):

# 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: Nhưng làm thế nào tôi có thể làm điều này bằng cách sử dụng 7z với tốc độ nén tối đa?

Tạo các tệp tạm thời bên cạnh tệp OUTPUT duy nhất là không tốt, bởi vì nếu tôi cần nén ~ 100 GB tệp có kích thước / thư mục trên FS 180 GB, tôi sẽ không có đủ dung lượng trống (nếu: tệp nén sẽ mất ~ 60 GByte).

Câu trả lời:


6

Có một lý do bạn muốn sử dụng 7zcụ thể, hoặc bạn chỉ muốn nén tốt hơn gzip?

Các xztiện ích sử dụng thuật toán nén giống như 7z(LZMA), và cho phép nén đường ống giống như gzip.

tar cvf ... | xz -9 | openssl ...

Lý do cá nhân tôi cần cụ thể là 7z là khả năng chia thành nhiều tập
Unirgy

1
xz không phải là đa luồng vào thời điểm đó (có thể là chưa) vì vậy trên máy tính đa lõi, nó có thể chậm hơn rất nhiều so với 7z
Xen2050

25

Điều này được đề cập trong trang man của 7z:

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

Tôi có thể đặt "|" và tiếp tục xử lý nó sau 7z?
pasko peter

4
Bạn có thể sử dụng -sođể kết xuất dữ liệu nén trên thiết bị xuất chuẩn thay vì tệp.
Wieland

1

Để nhanh chóng tạo một tệp chuẩn bị sao lưu từ xa của tất cả các tập lệnh nhà của tôi. Tôi sử dụng như sau:

# 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   

Lý do tôi không sao lưu gốc 'nhà' của mình là tôi đặc biệt đồng bộ hóa và chỉ gửi một số thư mục. Lưu ý cách cpio sẽ bỏ qua và kiểm tra các tệp hiện có mới hơn khi khôi phục. Điều này là mạnh mẽ. Công việc của bạn sẽ không bị ghi đè.

nụ @


-1

chỉ cần nó hoạt động, postgres pgdumpallthành tệp 7zip: sử dụng set pgpassword=xxxxxtrước khi ban hành lệnh:

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

chỉ mất 4 ngày để nó được đổ và nén! 50201104790 byte (47GB)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.