Linux/UNIX cpio (コピー イン/アウト) コマンドは、単一のファイルまたはアーカイブとの間でファイルをコピー、一覧表示、および抽出します。 cpio コマンドで使用できるオプションの一部を以下の表に示します。 cpio コマンドでは、o、i、または p オプションのいずれかを指定する必要があります。
オプション | 説明 |
-o | データをコピーします。 |
-i | コピーからの抜粋。 |
-t | コピーの内容を一覧表示します。 |
-v | 冗長モード。 |
-p | パス名を取得するためにコピーから読み取ります。 |
-a | コピー後にファイルのアクセス時間をリセットします。 |
この投稿では、cpio コマンドの使用法を理解するためのいくつかの例について説明します。
例 1 :/home の内容をコピーするには、示されているように find コマンドを実行し、出力を /tmp/home.cpio にリダイレクトします。
# find /home | cpio -ov > /tmp/home.cpio /home /home/geek /home/geek/CentOS-7.0-1406-x86_64-DVD.iso.3 /home/geek/CentOS-7.0-1406-x86_64-DVD.iso.4 /home/geek/.profile /home/geek/CentOS-7.0-1406-x86_64-DVD.iso.2 /home/geek/.bashrc ...............................................
例 2 :home.cpio の内容を一覧表示します。
# cpio -itv < /tmp/home.cpio -rw-rw-r-- 1 geek geek 2556 Nov 29 13:03 /home/geek/ubuntu -rw-rw-r-- 1 geek geek 2255 Sep 1 14:32 /home/geek/.grive-last-sync.log drwxr-xr-x 17 geek geek 0 Dec 5 15:46 /home/geek/Desktop -rw-rw-r-- 1 geek geek 357376 Sep 11 12:23 /home/geek/Desktop/mysql-classroom.doc -rw-rw-r-- 1 geek geek 43008 Sep 27 13:16 /home/geek/Desktop/linux_interview_question.doc drwxrwxr-x 3 geek geek 0 Sep 12 13:59 /home/geek/Desktop/July-2014 -rw-rw-r-- 1 geek geek 8147 Sep 11 13:04 /home/geek/Desktop/July-2014/brainuse.php -rw-rw-r-- 1 geek geek 10885 Sep 11 13:16 /home/geek/Desktop/July-2014/news.php drwxrwxr-x 2 geek geek 0 Sep 11 12:34 /home/geek/Desktop/July-2014/images -rw-rw-r-- 1 geek geek 13609 Sep 11 12:34 //cdn.thegeekdiary.com/home/geek/Desktop/July-2014/images/3.gif -rw-rw-r-- 1 geek geek 206334 Sep 11 12:34 //cdn.thegeekdiary.com/home/geek/Desktop/July-2014/images/July14-header.gif -rw-rw-r-- 1 geek geek 1736 Sep 11 12:34 //cdn.thegeekdiary.com/home/geek/Desktop/July-2014/images/2.gif ..............................................
例 3 :home.cpio からファイルを復元します。
# cpio -iv < /tmp/home.cpio
例 4 :ファイルを /home から /tmp/home.bkp という名前の新しいディレクトリに直接コピーします。
# find /home | cpio -pvd /tmp/home.bkp /tmp/home.bkp/home/geek/ubuntu /tmp/home.bkp/home/geek/.grive-last-sync.log /tmp/home.bkp/home/geek/Desktop /tmp/home.bkp/home/geek/Desktop/mysql-classroom.doc /tmp/home.bkp/home/geek/Desktop/linux_interview_question.doc /tmp/home.bkp/home/geek/Desktop/July-2014 ............................................
例 5 :選択したファイルのみを home.cpio にコピーします。
# find . -iname *.php -print | cpio -ov >/tmp/home.cpio ./Desktop/July-2014/brainuse.php ./Desktop/July-2014/news.php ./Desktop/July-2014/developer_section.php ./Desktop/July-2014/mysql1.php ............................
上記のコマンドは、home.cpio 内の「.php」拡張子を持つすべてのファイルをコピーします。
例 6 :「cpio -F」を使用して「.tar」アーカイブを作成しています。
# find . -iname *.php -print | cpio -ov -H tar -F /tmp/home.tar ./Desktop/July-2014/brainuse.php ./Desktop/July-2014/news.php ./Desktop/July-2014/developer_section.php ./Desktop/July-2014/mysql1.php ./Desktop/July-2014/index.php ............................................
上記のコマンドは、「cpio -F」を使用して、拡張子が「.php」のすべてのファイルの tar アーカイブ「home.tar」を作成します。
例 7 :cpio を使用して「.tar」ファイルの内容を一覧表示します。
# cpio -it -F /tmp/home.tar Desktop/July-2014/brainuse.php Desktop/July-2014/news.php Desktop/July-2014/developer_section.php Desktop/July-2014/mysql1.php Desktop/July-2014/index.php Desktop/July-2014/linux1.php ..................................
例 8 :cpio 経由で「.tar」アーカイブを抽出します。
# cpio -idv -F /tmp/home.tar