Linux 上常見的打包、壓縮軟體
- tar:(Tape Archive)是一個用於檔案打包的工具,最早用於將多個檔案和目錄打包成一個檔案,便於在磁帶等存儲設備上進行備份和傳輸。
- gzip:使用 DEFLATE 算法,基於 LZ77 和霍夫曼編碼。
- bzip2:使用 Burrows-Wheeler 變換和 Run-Length Encoding (RLE) 算法,並結合霍夫曼編碼。
- xz:使用 LZMA(Lempel-Ziv-Markov chain algorithm)算法,這是一種高度優化的壓縮算法,提供了非常高的壓縮比。
要注意的是,tar 只是打包工具,將多個檔案目錄屬性擁有者ID 等資訊打包成一個 tarball File,本身並沒有壓縮
所以使用 tar,會搭配 gzip, bzip2, 或是 xz 等壓縮工具,來節省空間或是傳書時間
壓縮比:gzip < bzip2 < xz
壓縮速度:gzip > bzip2 > xz
解壓縮速度:gzip > bzip2 > xz
資源用量:gzip < bzip2 < xz
雖然 7z & rar 都有 for Linux 版本,不過在 Linux 上並不流行
tar 搭配 gzip 打包壓縮
tar -zcvf archive.tar.gz /path/to/directory ...
有的人會將 archive.tar.gz 直接命名為 archive.tgz
tar 搭配 bzip2 打包壓縮
tar -jcvf archive.tar.bz2 /path/to/directory ...
注意:參數 j 是小寫
tar 搭配 xz 打包壓縮
tar -Jcvf archive.tar.xz /path/to/directory ...
注意:參數 J 是大寫
常用參數意義
參數 | 說明 |
---|---|
c | Create archive |
v | Verbosely |
f | use archive file or device ARCHIVE |
t | List all files in archive |
x | Extract files from archive |
A | append tar files to an archive |
d | find differences between archive and file system |
r | append files to the end of an archive |
u | only append files newer than copy in archive |
接下來,搭配 ssh,進行遠端管理
命令遠端伺服器壓縮資料
ssh user@box tar zcvf - /dir1/ > /destination/file.tar.gz
將 tar 打包輸出的結果,透過 Pipe 傳給 gzip,並指定 gzip 壓縮程度
ssh user@box 'cd /dir1/ && tar -cf - file | gzip -9' >file.tar.gz
壓縮本機檔案,然後透過 SSH 傳送到遠端伺服器保存
tar zcvf - /wwwdata | gzip | ssh user@dumpserver.nixcraft.in "cat > /backup/wwwdata.tar.gz"
tar 打包壓縮 > gpg加密 > ssh 傳送到遠端主機 cat 輸出成檔案
tar zcf - /data2/ | gpg -e | ssh vivek@nas03 'cat - > data2-dd-mm-yyyy.tar.gz.gpg'
如果遠端伺服器需要特權,ssh 加上 -t 參數,使用 sudo
tar zcvf - /wwwdata | ssh -t vivek@192.168.1.201 "sudo cat > /backup/wwwdata.tar.gz"
命令遠端伺服器壓縮檔案,並傳送到本機目前路徑
cd /path/local/dir/ && ssh vivek@server1.cyberciti.biz 'tar zcf - /some/dir' | tar zxf -
使用 dd 指令備份硬碟 /dev/sdvf 到遠端
dd if=/dev/sdvf | ssh backupimg@vpc-aws-mumbai-backup-001 'dd of=prod-disk-hostname-sdvf-dd-mm-yyyy.img'
從遠端備份硬碟資料還原到本地端
ssh backupimg@vpc-aws-mumbai-backup-001 'dd if=prod-disk-hostname-sdvf-dd-mm-yyyy.img' | dd of=/dev/sdvf
使用 SCP 備份,遇到連結或是特殊裝置路徑就會失敗,可以使用 tar 來備份
ssh vivek@nuc-box 'tar czf - /home/vivek' | tar xvzf - -C /home/vivek
cat my-data.tar.gz | ssh user@server1.cyberciti.biz "cd /path/to/dest/; tar zxvf -"
顯示壓縮進度條
cd /dir/to/backup/ && tar zcf - . | pv | ssh vivek@server1.cyberciti.biz "cat > /backups/box42/backup-dd-mm-yyyy.tgz"
0 意見:
張貼留言