RPMパッケージからファイルを抽出する方法を説明する前に、最初はシステムのcpioコマンドについて学習します。
アーカイブからアーカイブファイルを読み取ると、換言すれば、cpioコマンド・ファイル(またはディレクトリ)を抽出してもよいからパッケージにcpioコマンド、アーカイブは、パッケージファイル(またはディレクトリ)にコピーされてもよいです。
アーカイブ、ライブラリ・ファイルも事実は、tarやcpioファイル形式で、ファイルを他のファイルだけでなく、いくつかの関連情報(ファイル名、アクセス権など)を含む、呼び出すことができます。アーカイブは、ディスクファイルまたはテープやパイプの両方をすることができます。
cpioコマンドは、データ(ファイル)がアーカイブライブラリをcpioがためにバックアップすることができますので、あなたは、データ復旧のためのcpioのドキュメントライブラリを使用することができ、バックアップとして見たり、コマンドを復元することができます。
次の点に注意してください、データをバックアップまたは復元するcpioコマンドを使用します。
- cpioの場合、絶対パスを使用してバックアップデータを使用する場合、自動的に絶対パスでデータを復元するために戻り、相対パスを使用してバックアップデータ場合は同様に、そのデータは、相対パスに復元されます。
- バックアップを指定する(またはリストア)すること自体ができなくcpioコマンドファイルには、ターゲットファイル(またはディレクトリ)のフルパスを必要とする成功を読み取ることができますので、このコマンドは、多くの場合、findコマンドと一緒に使用されます。
- データを復元するときにcpioコマンドが自動的に同じファイルを上書きしません、それは(直接現在のフォルダに解凍)ディレクトリを作成しません。
主に次の3つの基本モードでcpioコマンド:
- 「-O」モードは:コピーアウトモードを指し、データベースファイルにデータをバックアップすることで、次のように、コマンドの形式は次のとおりです。
[ルート@ localhostの〜]#のcpio -o [VCB]> [ファイルシュウデバイス]
次のように各オプションの意味は以下のとおりです。- -o:コピーアウトモード、バックアップ。
- -v:バックアッププロセスを表示します。
- -c:新しい携帯用フォーマット記憶の使用。
- -B:入力/出力ブロック5120Bytes、代わりに512バイトモードを設定します。
たとえば、バックアップデータのcpioコマンドを使用すると、次のとおりです。
[ルート@ localhostの〜] #findの/ etc -print | cpioの-ocvB> /root/etc.cpio
#は、/ etc /ディレクトリに、使用>ファイルをetc.cpioにエクスポートバックアップするには、findコマンドを使用することを指定し
ます。[root @ localhostの〜]#を-H etc.cpio II
-rw - R&LT - R&LT - .. 1. 6ルートルート12時29分21M etc.cpio付け5。
#ファイル生成etc.cpio - 「-I」モードは:コピーインモードを指し、ファイルリポジトリからデータを回復することで、次のように、コマンドの形式は次のとおりです。
[ルート@ localhostの〜]#1はcpio -i [VCDU] <[ファイル|デバイス]
次のように各オプションの意味は以下のとおりです。- -i:コピーインモード、減少;
- -v:表示低減プロセス。
- -c:新しいポータブル形式のストレージ;
- -d:新しいディレクトリに自動的に復元します。
- -u:自動的に新しいファイルが古いファイルを上書きし使用します。
たとえば、次のように使用したデータは復元コマンドをcpioの前にバックアップ:[ルート@ localhostの〜]#cpioの-idvcu </root/etc.cpio
#バックアップなどの復元
私たちは、現在のディレクトリ/ルート/を見れば、あなたは何世代に/ etc /ディレクトリを検索しません#を。これは、ときにデータを直接に/ etc /ディレクトリシステムに復元されているが、/ルートの/ etc /ディレクトリに生成されていないので、絶対パスを使用して、バックアップの/ etc /ディレクトリ - 「-p」モード:ディレクトリからすべてのファイルを読み取ることができますが、cpioのライブラリにそれらをバックアップしませんが、直接、別のファイルにコピー-pモードを使用、コピーモードを指します。
例えば、/テスト/ bootディレクトリにコピー-p /ブーツの使用は/次のコマンドを実行します。[ルート@ localhostの〜]#のCDを/ tmp /
を/ tmp /ディレクトリに#
[ルート@ localhostのTMP] -rf * #rm
すべてのデータ#が削除を/ tmp /ディレクトリ
のテストます。mkdir [ルートはlocalhost tmpの@]#
#はバックアップを作成ディレクトリ
#[ローカルホストtmpの@ルート]検索/ブーツ/ -print | cpioの-p / tmpに/テスト
を/ tmp /テスト/ディレクトリに#バックアップ/ブート/ディレクトリ
[@ルートlocalhostのTMP]#のLSテスト/ブート
で#/ TMP /テスト/ディレクトリのバックアップ/ブーツ/ディレクトリ
指定されたファイルでRPMパッケージを抽出するために、cpioコマンドを使用します
システムファイルを誤って削除または誤って変更された場合は、サーバー・プロセスを使用することで、生のRPMパッケージファイルシステムのcpioの抽出コマンドを使用することを検討して、ソースファイルには、故障を修復することです。
RPMパッケージには、次のようにコマンド形式は、一つ一つを抽出するために、パッケージファイルを許可します。
[ルート@ localhostの〜]#のrpm2cpioパッケージフルネーム| cpioの-idv絶対ファイルパス。
コマンドは、それがcpioコマンド形式に、RPMのrpm2cpioパケットで、cpioコマンドをファイルのcpio指定されたライブラリファイルから抽出することができます。
たとえば、私たちは/ binに/ LSは、修復するには通常2つの方法を削除コマンド慎重でないと仮定します。
- coreutilsの-8.4-19.el6.i686パッケージ(RPMパッケージからなるlsコマンド)、その後、-forceオプションでそれをインストールします。
- パッケージのcoreutils-8.4-19.el6.i686 / binに/ lsのファイルから抽出されたcpioコマンドを使用して、適切な場所にコピーします。
ここでは、最初の二つの方法を選択してください。一部の読者はどのようにしてlsコマンドは、RPMパッケージ、それの一部であることを知っています、求めることができますか?使用するのは非常に簡単で rpm -qf
、次のようにコマンドを:
[ルートlocalhostの@〜]#-qf RPM / binに/ LSの
coreutilsの-8.4-19.el6.i686
#lsがファイルを閲覧されたパッケージに属しています
これに基づき、我々は単にcpioの抽出されたコマンドlsコマンドファイルからRPMパッケージを使用して、次のコマンドを達成するために対応する位置にコピーします:
[ルートlocalhostの@〜]#mvを/ binに/ lsの/ルート/
/ binに/ lsのは、誤って削除の錯覚を作成し、次/ルート/ディレクトリに移動するためのコマンドへ#
[ルート@ localhostの〜]#のLS
-bash:LS:いないコマンド見つかった
#LSはコマンドをこの時点で、システムが報告します"コマンドが見つかりません"というエラー
[ルート@ localhostの〜]#rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm
| cpioの-idv ./bin / LSの
#は、現在のディレクトリにlsコマンドファイルを抽出
[ルート@ localhostの〜]#cpは/ルート/ binに/ lsの/ binに/
#/ bin /ディレクトリに抽出されたlsコマンドファイルをコピー
[ルート@ localhostの〜]#をLS
install.logにinstall.log.syslogのLSのinittabのアナコンダ-ks.cfgのビン
#は、lsコマンド、見ることができ、適切に使用することができます
例:
- 最初に表示含まれるファイルのリストをコマンドrpmを使用します
rpm2cpio your.rpm | cpio -t
- 次に、以下のコマンドを実行し、リストが必要なファイルを表示見つけます:
rpm2cpio your.rpm | cpio -id your-file