Lin*_*eak 1 tar gpg xz gnu-parallel
我想加快我的归档操作,我通常会进行 23 GiB(一张蓝光)备份。
我发现了这个:How to do Large fileparallel Encryption using GnuPG and GNU parallel?
因为我根本不理解这段代码(从未使用过parallel):
tar --create --format=posix --preserve-permissions --same-owner --directory $BASE/$name --to-stdout . |
parallel --pipe --recend '' --keep-order --block-size 128M "xz -9 --check=sha256 |
gpg --encrypt --recipient $RECIPIENT;echo bLoCk EnD" |
pv > $TARGET/$FILENAME
Run Code Online (Sandbox Code Playgroud)
我想问一下有没有人可以帮我解析一下。谢谢。
tar运行命令tar。
--create创建一个 tar 存档。
--format=posix使用 POSIX 格式的 tar 存档。这意味着您可以在支持 POSIX 格式的其他系统上提取它。
--preserve-permissions对文件保持相同的权限
--same-owner保持文件的相同所有者(仅在以 root 身份提取时相关)
--directory $BASE/$name开始之前更改为目录 $BASE/$name
--to-stdout不保存到文件,而是将输出发送到 stdout
.压缩整个目录
|通过管道将 stdout 传递到下一个命令
parallel并行不悖
--pipe使用管道模式,因此 stdin 上的输入将作为 stdin 上的输入提供给要运行的命令(而不是作为命令行参数,这是正常模式)。
--recend ''通常 GNU Parallel 在 \n 上分割。禁用它,因为输入不是文本,而是二进制数据。
--keep-order确保在第二个命令的输出之前打印第一个命令运行的输出 - 即使第二个命令先完成。
--block-size 128M将 128 MB 数据块传递给命令。
"..."要运行的命令
|通过管道将 stdout 传递到下一个命令
pv显示发送数据的速度
> $TARGET/$FILENAME将标准输出重定向到 $TARGET/$FILENAME
GNU Parallel 为每个 128MB 块启动此命令:
xz命令 xz
-9压缩级别9
--check=sha256在输出中包含完整性检查,以便能够捕获位错误(例如,在有故障的磁盘上)。
|通过管道将 stdout 传递到下一个命令
gpgGNU 隐私保护命令
--encrypt加密来自 stdin 的数据
--recipient $RECIPIENT使用 $RECIPIENT 的密钥进行加密
;命令分隔符
echo bLoCk EnD打印块结束
| 归档时间: |
|
| 查看次数: |
1078 次 |
| 最近记录: |