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