我想加快我的归档操作,我通常会进行 23 GiB(一张蓝光)备份。
我发现了这个:如何使用GnuPG和GNU并行进行大文件并行加密?
因为我根本不理解这段代码(从未使用过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
我想问一下有没有人可以帮我解析一下。谢谢。
答案1
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 传递到下一个命令
gpg
GNU 隐私保护命令
--encrypt
加密来自 stdin 的数据
--recipient $RECIPIENT
使用 $RECIPIENT 的密钥进行加密
;
命令分隔符
echo bLoCk EnD
打印块结束