GNU 並行正確使用與 tar、xz、gpg 結合
我想加快我的歸檔操作,我通常做 23 GiB(一個藍光)備份。
我發現了這個:How to do large file parallel 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
**我想問是否有人可以為我解析它。**謝謝你。
tar
執行命令tar
。
--create
創建一個 tar 存檔。
--format=posix
使用 POSIX 格式的 tar 存檔。這意味著您可以在支持 POSIX 格式的其他系統上提取它。
--preserve-permissions
對文件保持相同的權限
--same-owner
保持文件的相同所有者(僅在以 root 身份提取時相關)
--directory $BASE/$name
更改目錄 $ BASE/ $ 開始前的名字
--to-stdout
而不是保存到文件,將輸出發送到標準輸出
.
tar 整個目錄
|
管道標準輸出到下一個命令
parallel
並行不悖
--pipe
使用管道模式,因此標準輸入上的輸入將作為標準輸入上的輸入提供給要執行的命令(而不是作為命令行參數,這是正常模式)。
--recend ''
通常 GNU Parallel 在 \n 上拆分。禁用它,因為輸入不是文本,而是二進制數據。
--keep-order
確保第一個命令執行的輸出在第二個命令的輸出之前列印 - 即使第二個命令先完成。
--block-size 128M
將 128 MB 的數據塊傳遞給命令。
"..."
要執行的命令
|
管道標準輸出到下一個命令
pv
顯示發送數據的速度
> $TARGET/$FILENAME
將標準輸出重定向到 $ TARGET/ $ 文件名GNU Parallel 為每個 128MB 塊啟動此命令:
xz
命令 xz
-9
壓縮等級 9
--check=sha256
在輸出中包括完整性檢查,以便能夠擷取位錯誤(例如在故障磁碟上)。
|
管道標準輸出到下一個命令
gpg
GNU 隱私衛士命令
--encrypt
加密來自標準輸入的數據
--recipient $RECIPIENT
使用 $RECIPIENT 的密鑰進行加密
;
命令分隔符
echo bLoCk EnD
列印鎖定結束