一、cpio簡介
cpio是常用的Linux系統文件打包命令,用於將文件和文件夾打包/複製到一個單獨的歸檔文件中。使用cpio進行文件備份具有封裝性、壓縮性和安全性等優點。
與tar命令相比,cpio不需要事先知道要打包的文件數量,也不需要在卷更換時手動輸入;此外,cpio命令的安全性更高,因為它不允許來自標準輸入的任何文件名,這有助於防止一些複雜的攻擊。
二、cpio常用選項
$ cpio [選項] < 文件名
常用選項如下:
- -i或–extract:將文件從歸檔文件中還原出來;
- -o或–create:將文件打包到歸檔文件中;
- -t或–list:列出歸檔文件中包含的文件;
- -v或–verbose:顯示正在處理的文件名;
- -z或–gzip:通過gzip壓縮來加壓縮/解壓縮文檔;
- -c或–io-size:設置緩存大小;
- -F或–file-format:設置輸出文件的格式;
- -B或–format:設置輸入文件的格式;
- -M或–multi-volume:多卷歸檔模式;
- -C或–directory:指定處理文件的目錄;
- –no-preserve-owner:不保留原文件所有者和屬性;
- –no-absolute-filenames:不使用絕對路徑名。
三、cpio備份文件和目錄
1. 備份文件
使用下面的命令將文件打包到歸檔文件中:
$ echo "hello world" > test.txt $ cpio -I < test.txt.cpio $ cpio -it < test.txt.cpio
解釋如下:
- echo “hello world” > test.txt:創建一個包含文本「hello world」的文件test.txt;
- cpio -I < test.txt.cpio:將test.txt.cpio文件中的文件還原出來;
- -i選項表示提取文件,-t選項表示列出歸檔文件中包含的文件;
- <符號表示將歸檔文件定向到標準輸入流。
2. 備份目錄
使用下面的命令將目錄打包到歸檔文件中:
$ mkdir testdir $ echo "hello dir" > testdir/test.txt $ find testdir | cpio -ov > testdir.cpio
解釋如下:
- mkdir testdir:創建一個名為testdir的目錄;
- echo “hello dir” > testdir/test.txt:在testdir目錄下創建一個包含文本「hello dir」的文件test.txt;
- find testdir | cpio -ov > testdir.cpio:將testdir目錄歸檔並保存到testdir.cpio文件。
- -o選項表示創建歸檔文件,-v表示輸出詳細信息。
四、cpio命令的其他用途
1. 備份整個系統
使用下面的命令備份整個系統(需要root許可權):
$ find / | cpio -ov -H tar > backup.cpio
解釋如下:
- find /:搜索整個文件系統;
- -H tar選項表示使用tar格式;
- 通過「>」符號將歸檔文件輸出到backup.cpio文件。
2. 數據傳輸
您可以使用cpio命令傳輸數據。例如,將文件從一台計算機複製到另一台計算機:
$ cpio -o < file.tar | ssh user@remote_host 'cpio -i'
解釋如下:
- 將歸檔文件輸出到標準輸出;
- 將輸出的數據流傳輸到遠程計算機的cpio命令中;
- 解壓縮並提取文件。
3. 使用cpio命令進行其他操作
cpio命令不僅可以用於打包備份,還可以用於其他操作,例如查找文件:
$ find / | cpio -pvmd \n /mnt/backup
解釋如下:
- -p選項表示複製文件到/mnt/backup目錄中;
- -v顯示處理的文件名;
- -m嘗試創建目錄,如果不存在則會創建;
- -d將歸檔文件中的目錄鏈接應用於文件系統上的實際目錄。
五、總結
cpio命令是Linux系統中用於文件/目錄打包和備份的常用命令之一。在實際使用中,我們可以根據自己的需求選擇合適的選項和格式。此外,cpio命令不僅可以用於文件備份,還可以用於其他操作,例如文件傳輸和文件查找等。掌握cpio命令的使用,在實際工作中將會提高效率,縮短備份時間。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/152322.html