介紹如何在 Linux 中使用 cpio
指令建立與解開 cpio
或 tar
備份檔。
cpio
備份檔案若要使用 cpio
指令建立 cpio
備份檔案,首先要先準備好要進行備份的檔案清單:
# 列出要備份的檔案
ls *.txt
file1.txt file2.txt file3.txt
接著將要備份的檔案清清單交給 cpio
進行備份,以下指令會將 ls
列出的檔案備份至 archive.cpio
:
# 將指定檔案備份至 cpio 檔 ls *.txt | cpio -ov > archive.cpio
file1.txt file2.txt file3.txt 6 blocks
這裏 cpio
的兩個參數意義如下:
-o
:從標準輸入讀取檔案清單,並將備份資料輸出至標準輸出。-v
:顯示詳細的檔案清單。我們也可以直接使用 -F
參數來指定輸出的備份檔案,以下指令同樣也可以將檔案備份至 archive.cpio
:
# 輸出至指定的備份檔案 ls *.txt | cpio -ov -F archive.cpio
file1.txt file2.txt file3.txt 6 blocks
除了用 ls
列出檔案清單之外,也可以用任何其他工具來產生檔案清單,例如 find
指令:
# 將指定檔案備份至 cpio 檔 find . -name '*.txt' -print | cpio -ov > archive.cpio
./file2.txt ./file3.txt ./file1.txt 6 blocks
我們也可以利用 find
將目前目錄下的所有子目錄與檔案全部列出,交由 cpio
進行備份:
# 備份目前目錄下所有子目錄與檔案 find . -print | cpio -ov -F /backup/archive.cpio
cpio
備份檔案若要解開 cpio
備份檔案,可以使用 cpio
指令加上 -i
參數:
# 解開 cpio 備份檔 cpio -iv < archive.cpio
我們也可以直接使用 -F
參數來指定輸入的備份檔案,以下指令同樣也可以解開 archive.cpio
備份檔:
# 解開指定的 cpio 備份檔 cpio -iv -F archive.cpio
若備份檔案中含有目錄結構,可以加上 -d
參數保留目錄結構:
# 解開 cpio 備份檔,保留目錄結構 cpio -idv < archive.cpio
若要保留備份檔案的變更日期(modification time),可以加上 -m
參數:
# 解開 cpio 備份檔,保留目錄結構與檔案變更日期 cpio -idmv < archive.cpio
tar
備份檔案cpio
也可以用來建立 tar
格式的備份檔案:
# 輸出至 tar 格式備份檔 ls *.txt | cpio -ov -F archive.tar
也可以用 -H
參數指定輸出的格式,透過標準輸出來輸出資料:
# 輸出至 tar 格式備份檔 ls *.txt | cpio -ov -H tar > archive.tar
tar
備份檔案若要解開 tar
格式的備份檔案,一樣是使用 -i
參數,搭配 -F
參數指定備份檔案:
# 解開 tar 格式備份檔 cpio -iv -F archive.tar
也可以用 -H
參數指定輸入的格式,從標準輸入讀取 tar
備份檔案並將其中的檔案解開:
# 解開 tar 格式備份檔 cpio -iv -H tar < archive.tar
若要查看 cpio
備份檔案中含有哪些檔案,可以使用 -it
參數:
# 查看 cpio 備份檔內容 cpio -it -F archive.cpio
查看 tar
備份檔案的方式也都相同:
# 查看 tar 備份檔內容 cpio -it -F archive.tar
cpio
搭配 gzip
壓縮與解壓縮cpio
也可以搭配 gzip
這類的壓縮格式一起使用,建立 .cpio.gz
格式的備份檔:
# cpio 搭配 gzip 壓縮 ls *.txt | cpio -ov | gzip > archive.cpio.gz
若要解開 .cpio.gz
格式的備份檔,可利用以下指令:
# cpio 搭配 gzip 解壓縮 gzip -dc archive.cpio.gz | cpio -iv
cpio
搭配 -p
參數之後,可以用來複製檔案,效果就類似 cp
指令,但是 cpio
可以保留檔案變更時間、擁有者與群組資訊:
# 以 cpio 複製檔案,保留檔案變更時間、擁有者與群組資訊 ls *.txt | sudo cpio -pmv /home/ubuntu/new_dir/