歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> LinuxShell腳本攻略---第六章B計劃

LinuxShell腳本攻略---第六章B計劃

日期:2017/3/1 13:36:35   编辑:SHELL編程

6.1 用tar歸檔

1 tar命令可以用來歸檔文件,可以用tar將多個文件和文件夾保存為單個文件,同時還能保留所有文件屬性,如所有者,權限等,由該命令創建的文件通常稱為tarball

2 按照下面的方法,用tar對文件進行歸檔: tar -cf output.tar sources

例如tar -cf output.tar file1 file2 file3....

命令中的-c代表的是創建文件,-f代表的是指定文件名

3 向歸檔中添加文件可以使用下面命令: tar -rvf output.tar new_file

4 用下面的方法列出歸檔文件的內容: tar -tf output.tar

5 如果需要在歸檔或列出歸檔內容的過程中獲知更多細節,可以使用-v或-vv選項,它們允許在終端中輸出更詳細的信息

6 下面的命令可以將歸檔文件的內容提取到當前目錄中: tar -xf output.tar

-x表示把當前歸檔文件中的內容提取到當前目錄,我們可以使用-C選項指定需要提取到的目錄

tar -xf output.tar -C path

7 連接兩個歸檔文件: tar -Af file1.tar file2.tar // -A選項用來把兩個歸檔文件進行合並

8 從歸檔文件中刪除文件: tar -f output.tar --delete file1 file2 // 命令把歸檔文件中的file1和file2刪除

9 從歸檔中排除部分文件

例如,排除所有的.txt文件: tar -cf output.tar * --exclude "*.txt"

也可以將需要排除的文件列表放入到文件中: tar -cf output.tar * -X file

6.2 用cpio歸檔

1 cpio是類似於tar的另一種歸檔格式,它用來將多個文件和文件夾存儲為單個文件,同時保留所有文件屬性,如權限,文件所有權等

2 cpio通過stdin獲取輸入文件名,並將歸檔文件寫入stdout,我們必須將stdout重定向到一個文件,以接收cpio的輸出

創建測試文件: touch file1 file2 file3

將測試文件按照下面的方法進行歸檔: echo file1 file2 file3 | cpio -ov > output.tar

3 要列出cpio歸檔文件中的內容,使用下面命令: cpio -it < output.tar // 這個命令列出給定的cpio歸檔文件中的所有內容

-i用於指定輸入 -t 表示列出歸檔文件中的內容

6.3 用gunzip或gzip壓縮

1 gzip是GNU/Linux平台下常用的壓縮格式,gzip只能夠壓縮單個文件,而無法對目錄和多個文件進行歸檔,因此我們一般把這個任務交給tar,然後再用gzip壓縮

2 要使用gzip壓縮文件,可以使用下面的命令: gzip filename

3 將gzip文件解壓縮的方法如下: gunzip filename.gz

4 要列出壓縮文件的屬性信息: gzip -l filename.gz

5 zcat命令無需解壓縮,直接讀取gzip格式文件

zcat filename.gz // 這個命令可以直接讀取壓縮文件的內容

6 壓縮率,我們可以指定壓縮率,壓縮率有9級,其中:

1級的壓縮率最低,但是壓縮速度最快; 9級的壓縮率最高,但是壓縮速度最慢

6.4 用bunzip和bzip壓縮

1 bunzip是另一種以gzip類似的壓縮技術

2 用bzip2進行壓縮: bzip2 filename // bzip2會刪除源文件並生成名為filename.bz2文件

3 解壓縮bzip2格式文件: bunzip2 filename.bz2

4 使用bzip2或bunzip2時,它會刪除輸入文件並生成壓縮過的輸出文件,我們可以使用選項-k來避免刪除輸入文件

bunzip2 filename.bz2 -k

6.5 用lzma壓縮

1 使用lzma進行壓縮: lzma filename // lzma會刪除原文件並生成名為filename.lzma

2 保留輸入文件: 使用lzma或unlzma時,它們會刪除輸入文件並生成壓縮過的輸出文件,不過我們可以指定選項-k來避免刪除原文件

6.6 用zip歸檔和壓縮

1 zip做為一種流行的壓縮格式,在很多的平台中都可以看到它的身影

2 對歸檔文件采用zip格式進行壓縮: zip output.zip source //該命令會生成output.zip文件

3 對目錄和文件進行遞歸操作: zip -r output.zip directory

4 要從zip文件中提取內容,可以使用: unzip output.zip //unzip這個命令並不會刪除output.zip文件

5 從壓縮歸檔文件中刪除內容,則使用-d: zip -d output.zip file //這個命令刪除壓縮文件中的file

6 列出歸檔文件中的內容: unzip -l output.zip

6.7 加密工具與散列

crypt

1 crypt是一個簡單的加密工具,它從stdin接受一個文件以及口令,做為輸入,然後將加密數據輸出到output

2 crypt < input_file > output_file

Enter passphrase:

gpg

1 gpg是一種應用廣泛的加密方案,它采用密鑰簽名技術保護文件內容,只有經過認證的用戶才能訪問數據

2 用gpg加密文件: gpg -c filename //這條命令采用交互式讀取口令,並生成filename.gpg

3 解密gpg文件: gpg filename.gpg // 這條命令讀取口令,然後對文件進行解密

md5sum與sha1sum

1 md5sum與sha1sum都是單向散列算法,均無法擬推出原始數據,它們通常用於驗證數據完整性或為特定數據生成唯一的密鑰

2 它們可以為每個文件生成一個唯一的密鑰: md5sum file 或 sha1sum file

6.8 用rsync備份系統快照

1 rsync可以對位於不同位置的文件和目錄進行備份,它可以借助差異計算以及壓縮技術來最小化數據傳輸量

2 將源目錄復制到目的端: rsnyc -av source_path destination_path

其中-a表示要進行歸檔,-v表示在標准輸出上打印出細節信息或進度

3 要將數據備份到遠程服務器或主機,可以使用: rsnyc -av source_dir username@host:path

用下面的方法可以將遠程主機上的數據恢復到本地主機: rsnyc -av username@host:path destination

rsnyc命令用ssh連接到遠程主機,用user@host這種形式設定遠程主機的地址,其中user代表的是用戶名,host代表的是遠程主機的ip地址或域名

6.9 用dd克隆磁盤

1 dd命令原意是data definition,由於不正確的使用會導致數據丟失,因此它獲得了data destrory這一虐稱

2 dd的語法如下: dd if=source of=target bs=block_size count=count

if代表輸入文件或輸入設備路徑

of代表目標文件或目標設備路徑

bs代表塊大小,count則是需要復制的塊數,bs和count都是可選的

3 要將一個分區復制到文件中,可以使用:dd if=/dev/sda1 of=sda1_partition.img //該命令中的/dev/sda1是該分區的設備路徑

用備份恢復分區: dd if=sda1_partition.img of=/dev/sda1

4 如果要永久性刪除一個分區中的所有數據,我們可以使用dd向該分區中寫入0值

dd if=/dev/zero of=/dev/sda1 // /dev/zero是一個字符設備,它總是返回字符'\0'

5 在容量相同的硬盤間進行克隆: dd if=/dev/sda of=/dev/sdb

Copyright © Linux教程網 All Rights Reserved