捐血一袋救人一命

江蘇拙政園

江蘇 拙政園

全家福

日本 和歌山城

賞楓之旅

千燈 夕照

水鄉千燈

蘆洲 微風運河

破曉時分

顯示具有 linux 標籤的文章。 顯示所有文章
顯示具有 linux 標籤的文章。 顯示所有文章

2024年7月1日 星期一

Linux 上常用的打包壓縮軟體

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"

2024年4月2日 星期二

rsync

rsync 使用簡介

功能簡介:

Linux中的rsync(remote sync)是一個用於在本地系統之間或本地系統和遠程系統之間同步文件和目錄的強大工具。它可以在局域網中高效地傳輸大量數據,並且具有許多功能,使得文件同步和備份變得非常方便。

特點和用途:

  1. 增量備份:rsync可以將文件和目錄從源同步到目標,僅傳輸已更改或新增的部分,這種增量備份方式大大節省了帶寬和時間。
  2. 遠程同步:rsync支持通過SSH等協議在本地和遠程系統之間同步文件和目錄,這使得在不同主機之間進行文件同步變得非常方便。
  3. 保留文件屬性:rsync可以保留文件的屬性,包括權限、時間戳和所有者等信息。
  4. 多種選項:rsync具有多種選項,可以根據需要進行配置,例如遞歸同步、壓縮傳輸、忽略特定文件等。
  5. 傳輸加密:通過使用SSH等加密協議,rsync可以確保在本地和遠程系統之間的安全傳輸。

參數說明:

-a:表示以遞歸方式同步目錄,保留所有檔案屬性。
-v:表示輸出詳細信息,讓您可以看到正在複製的文件。
-z:表示在傳輸過程中壓縮檔案,以節省頻寬。
-h:表示以人類可讀的格式輸出信息。
-e “ssh”:指定使用SSH加密協議。
–ignore-existing:表示在目標目錄中忽略已經存在的文件,不再複製。
–bwlimit:指定一個限制,以Bytes為單位,指定每秒允許的最大傳輸速率。
–delete:刪除目的端不存在於原始路徑的檔案。
–remove-source-files:在成功搬移檔案後,從原始路徑中刪除這些檔案。

指令範例:

List=`ls -ld /volume1/Class/*[0-9] | awk -F' ' '{print $9}'`
for Path in $List; do rsync -avzh --ignore-existing /path/to/source/directory/* user@linux_b_server:/path/to/destination/directory/; done