cpioバックアップコマンド

5343 ワード

cpioは比較的古いバックアップコマンドであり、テープドライブのバックアップに使用されるツールでもあります.それでも、このコマンドを使用する必要がある場合が多い.たとえば、システムメモリイメージディスクをカスタマイズする場合などです.
知識:システムメモリイメージディスクは、通常、ブートパーティション/rootにあり、ファイル名はinitrdで始まります.このファイルは主にシステム起動時に必要なモジュール、例えばファイルシステムモジュール、RAIDモジュールなどをロードするために使用される.
小知識:メモリイメージとは、メモリに外部メモリファイルと全く同じイメージを作成することです.ユーザは、ファイル全体をメモリにマッピングするか、メモリに部分的にマッピングすることができます.メモリイメージの変更は、外部メモリファイルにそのまま反映されます.これにより、メモリイメージによる村ファイルへの操作が実現されます.

一、cpioコマンドの基本フォーマット


cpioコマンドはtarコマンドと同様に、ファイルまたはファイルリストをファイルにアーカイブする機能もあります.
【コマンド形式】
cpio [option] [destination-directory]
【共通オプション】
i:coppy-inモードを使用して、アーカイブファイルを復元するか、アーカイブファイルのファイルリストをリストします.
o:copy-outモードを使用して、アーカイブファイルを作成します.
p:copy-passモードを使用して、ファイルを目的ディレクトリに直接コピーします.
c:古いASCIIアーカイブモードを使用します.プラットフォーム間で使用する必要がある場合は、古いASCIIアーカイブフォーマットを使用する必要があります.
d:必要なディレクトリを作成します.ファイルが同じディレクトリにない場合は、このオプションを使用します.
v:処理手順の詳細を表示します.
t:アーカイブファイルのファイルリストを表示します.
m:ファイルのタイムスタンプを保持します.
H:指定されたフォーマットでファイルをアーカイブします.
【パラメータの説明】
copy-in:このモードを使用すると、オプションではないパラメータはワイルドカードとして扱われ、一致するファイルのみがコピーされます.ワイルドカードがない場合、cpioはすべてのファイルを復元します.
copy-out:このモードでは、標準入力からファイルリストが読み込まれ、アーカイブファイルにファイルが追加され、最後にアーカイブファイルが標準出力に出力されます.ファイルリストは区切り文字として改行文字を使用するため、findコマンドを使用して生成することが望ましい.
copy-pass:このモードでは、ファイルリストのファイルが別のディレクトリにコピーされ、アーカイブパッケージは使用されません.copy-inとcopy-outモードの結合に相当する.
二、cpioを使用してファイルをアーカイブする
cpioコマンドを使用してファイルをアーカイブする場合は、copy-outモード(オプションo)を使用してファイルリストを読み取り、ファイルをアーカイブする必要があります.それ以外にfindコマンドを使用して、アーカイブが必要なファイルリストを生成する必要があります.
(1)cpioはファイルを操作しないため,入出力はリダイレクトやパイプで行わなければならない.
たとえば、現在のディレクトリ内のすべてのファイルをアーカイブします.
# find 

# o , 

[root@localhost test]# find -print | cpio -o >../backup.cpio

91 blocks

上記の例のコマンドでは、リダイレクト出力を使用しない場合、cpioコマンドは結果を標準出力に直接出力します.
(2)オプションvを使用して、アーカイブの詳細を表示します.
[root@localhost zhu]# find -print | cpio -ov >../backup.cpio

.

./test.sh

./.bashrc

./.bash_history

./backup.cpio

./.bash_logout

...

(3)リダイレクト先がデバイスである場合,cpioはアーカイブファイルをデバイスに格納する.たとえば、テープドライブ・デバイスにアーカイブ・ファイルを保存します.
[root@localhost home]# find -print | cpio -ov >/dev/st0

(4)tarアーカイブコマンドとは異なり,cpioは圧縮機能を提供していない.生成されたアーカイブを圧縮する場合は、パイプと対応する圧縮コマンドを使用します.
[root@localhost test]# find -print | cpio -ov | gzip >../backup.cpio.gz
[root@localhost test]# find -print | cpio -ov | bzip2 >../backup.cpio.bz2

三、アーカイブファイルのファイルリストを表示する


(1)アーカイブのファイルリストを表示する:
[root@localhost zhu]# cpio -t <backup.cpio

.

join3

uniq_test

smbag

paste2

smbaa

...

(2)アーカイブ内のファイルリストを表示する場合、オプションvを使用して詳細なファイル情報を表示できます.
[root@localhost zhu]# cpio -tv <backup.cpio

drwxr-xr-x   3 root     root            0 Dec 10 14:53 .

-rw-r--r--   1 root     root           44 Dec  9 08:41 join3

-rw-r--r--   1 root     root           98 Dec  9 09:09 uniq_test

-rw-r--r--   1 root     root         1024 Dec  9 09:36 smbag

...

(3)アーカイブファイルのファイルリストを表示する場合、コマンドにオプション以外の文字が使用されている場合、cpioはファイルワイルドカードとして扱われます.例えば「*.c」を使用して、アーカイブファイルのすべてを表示する.c末尾のファイル:
[root@localhost zhu]# cpio -tv "*.c" <backup.cpio

-rw-r--r--   1 root     root          159 Dec  8 14:22 condition.c

91 blocks

四、cpioアーカイブファイルの復元


cpioアーカイブファイルを復元する場合は、cpioのオプションcopy-inモード(すなわちオプションi)を使用する必要があります.このモードでは、アーカイブ内のファイルのリストを表示するのと同じように、すべてのオプション以外の文字もワイルドカードとして扱われます.
(1)アーカイブファイルが異なるフォーマットを使用している場合、cpioは自動的にファイルを判断して復元し、アーカイブファイルのフォーマットを指定する必要はありません.
たとえば、オプションiを使用してファイルをアーカイブから復元し、リカバリファイルの詳細を表示します.
[root@localhost zhu]# cpio -iv <./backup.cpio