Có cách nào để mã hóa một thư mục bằng cách sử dụng gpg
? Nó dường như chỉ chấp nhận các tập tin như là đối số.
Có cách nào để mã hóa một thư mục bằng cách sử dụng gpg
? Nó dường như chỉ chấp nhận các tập tin như là đối số.
Câu trả lời:
Tại sao tar
các tập tin không được mã hóa và sau đó mã hóa tarball?
Tôi chỉ thấy tùy chọn --multifile
trên trang web:
Điều này sửa đổi một số lệnh khác để chấp nhận nhiều tệp để xử lý trên dòng lệnh hoặc đọc từ STDIN với mỗi tên tệp trên một dòng riêng biệt. Điều này cho phép nhiều tệp được xử lý cùng một lúc. Tệp --multi‐ hiện có thể được sử dụng cùng với --verify, --encrypt và --decrypt. Lưu ý rằng --multifile --verify có thể không được sử dụng với chữ ký tách rời.
Những gì bạn đang tìm kiếm cụ thể là --encrypt-files
, và một lần nữa trang web:
Đồng nhất với --multifile --encrypt.
Này, tôi đọc các bình luận về câu trả lời đã được đánh dấu là ngoại trừ; Có vẻ như bạn nên biết về sự kỳ diệu của |
(ống ẩn danh) kiểm tra câu trả lời tôi vừa đăng trên superuser và bạn sẽ thấy rằng tar
& gpg
có thể được nối với nhau sao cho đầu ra của bạn được nén và mã hóa trước khi xuất ra. Lưu ý rằng nó vẫn sẽ sử dụng các tài nguyên hệ thống quan trọng, vì vậy hãy kiểm tra các man
trang để biết nice
lệnh giới hạn khả năng của một lệnh chỉ ăn một phần trăm tài nguyên nhất định. Ngoài ra, trong khi tôi đang có tâm trạng đề xuất các chủ đề có thể làm cho cuộc sống của bạn dễ dàng hơn trên dòng lệnh nói chung; nhìn vào các mô tả tập tin và các đường ống được đặt tên để truyền dữ liệu xung quanh.
Nếu bạn muốn xem loại phép thuật nào có thể được thực hiện khi hiểu các đối tượng trên, thì hãy kiểm tra nhật ký xây dựng Travis-CI và các tập lệnh liên quan để tìm giải pháp liên quan đến tự động hóa GnuPG trên dòng lệnh.
---- Cập nhật
Theo yêu cầu, một ví dụ để xử lý các thư mục có thể được tìm thấy trong tập lệnh được đề cập trước đó ở dòng 680 và một ví dụ tổng quát hơn sẽ là ...
#!/usr/bin/env bash
dir_path="${1:?${0##*/} needs a directory path as the first argument}"
default_gpg_email="your-email@host.domain"
gpg_email="${2:-$default_gpg_email}"
_dir_name="${dir_path##*/}"
_dir_name="${_dir_name%/*}"
Var_star_date="$(date -u +%s)"
if [ -d "${dir_path}" ]; then
tar -cz - "${dir_path}" | gpg --always-trust --armor --batch --no-tty --encrypt --recipient ${gpg_email} > /tmp/${Var_star_date}_${_dir_name}.tgz.gpg"
else
echo "${0##*/} operates on directories"
exit 1
fi
... có thể chạy với script-name.sh /path/to/dir
hoặc script-name.sh /path/to/dir new-email@host.domain
và nên xuất ra /tmp
thư mục một tệp<current-date>_<top-dir-name>.tgz.gpg