跳至主要内容

[CLI] Tarball 加密打包

網路上免費創建團隊硬碟理論上創建者是團隊硬碟管理員, 但實際上所有的團隊硬碟仍受 Google GSuite / Workspace 機構管理員管轄. 機構管理員雖然無法直接存取檔案, 但有權將檔案擁有者轉移給他人. 如果只是存放網路上載來的資源就算了, 若是存放個人檔案, 仍建議加密壓縮.

TarBall

Tar 支援 gzip, bz2, xz... 等多種壓縮方式, 但 tar 並不支援加密. 在命令列模式下要加密 tarball, 需透過其他指令來完成, 最常用的是 openssl.

加密

簡單指令如下: (僅加密打包不壓縮)

$ tar cvf - FILE_NAME | openssl des3 -salt -k passw0rd -out /path/to/file.tar

這個指令主要分成兩部分

第一部分是 tar cvf - FILE_NAME, 意思是針對 FILE_NAME 進行打包, 其中三個參數的意思是:

  • c: create 創建一個新的 tarball 文件
  • v: verbose 輸出詳細的處理過程
  • f:file 需要打包的檔案 (Unix 下一切都是檔案, 資料夾也屬於檔案)

第二部分是 openssl des3 -salt -k passw0rd -out /path/to/file.tar 意思是針對文件透過 des3 加密, 其中參數的意思是:

  • des3 指定用來加密的演算法, 常見有三種 des, des3, idea
  • salt 為密碼添加一個隨機數, 和 -k 一起使用, 可防範字典攻擊
  • k 指定的密碼
  • out 輸出文件名字

解密

$ openssl des3 -d -k passw0rd -salt -in /path/to/file.tar.gz | tar xvf -

這指令剛好把加密打包的行為反過來. 先透過 openssl 把檔案解密後, 再利用 tar 解開 tarball 內容.

alias

整理資料時需大量的打包檔案, 未避免輸入時手誤打錯密碼, 直接在 bashrc 中新增加密和解密的 alias, 把密碼固定寫在 alias 中, 這樣加密打包時無須輸入一長串命令, 也不用擔心手誤 key 錯密碼.

alias ens='openssl des3 -salt -k passw0rd '
alias des='openssl des3 -d -salt -k passw0rd '
# 加密打包
$ tar cvf - FILE_NAME | ens -out FILE_NAME.tar.x
# 解密
$ des -in FILE_NAME.tar.x | tar xvf -

See Also