Tar

GNU 並行正確使用與 tar、xz、gpg 結合

  • March 16, 2019

我想加快我的歸檔操作,我通常做 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在輸出中包括完整性檢查,以便能夠擷取位錯誤(例如在故障磁碟上)。

|管道標準輸出到下一個命令

gpgGNU 隱私衛士命令

--encrypt加密來自標準輸入的數據

--recipient $RECIPIENT使用 $RECIPIENT 的密鑰進行加密

;命令分隔符

echo bLoCk EnD列印鎖定結束

引用自:https://unix.stackexchange.com/questions/506445