ホームページ 運用・保守 Linuxの運用と保守 Linux cpio の 3 つの動作モードとは何ですか

Linux cpio の 3 つの動作モードとは何ですか

Feb 09, 2023 am 11:52 AM
linux

cpio には 3 つの動作モードがあります: 1. コピーアウト モード (バックアップ ファイルをパッケージ化し、そのファイルをアーカイブ パッケージにコピーするために使用します); 2. コピーイン モード (アーカイブ パッケージ ファイルからファイルを復元するために使用します)。標準入力からアーカイブ パッケージを読み取る、アーカイブ パッケージ内のファイルを読み取る、またはアーカイブ パッケージの内容を一覧表示することができます; 3. コピーパス モードは、あるディレクトリ ツリーから別のディレクトリ ツリーにファイルをコピーするために使用されます。

Linux cpio の 3 つの動作モードとは何ですか

#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。

Linux では、cpio は、cpio アーカイブ ファイルの作成、アーカイブ ファイルからのファイルの抽出、またはあるディレクトリから別のディレクトリへのファイルのコピーに使用されるデータのバックアップおよび回復ツールです。生成されたアーカイブ ファイルは、ディスク ファイルにすることも、テープなどのデータ ストリーミング メディアに書き込むこともできます。 cpio は、バイナリおよび ASCII ヘッダー データ形式の cpio アーカイブ ファイルを処理できるだけでなく、さまざまな tar 形式のアーカイブ ファイルを読み書きすることもできます。互換性を維持するために、特に指定がない限り、cpio は通常、バイナリ ヘッダー データ形式でアーカイブ ファイルを作成します。

cpio は tar コマンドに似ており、ファイルを cpio または tar 形式でアーカイブ パッケージ ファイルにコピーしてパッケージ化したり、アーカイブ パッケージ ファイルからファイルをコピーしたりできます。アーカイブ パッケージ ファイルは、ディスク上のファイルまたはテープなどのデバイス ファイルです。

cpio コマンドは、アーカイブ ファイルからファイルを抽出するときに、どのアーカイブ ファイルが読み取られているかを自動的に識別し、異なるシステムで作成された異なるバイト オーダーを持つアーカイブ ファイルを読み取ることもできます。

cpio には、次の表に示すように 3 つの動作モードがあります。

cpio の 3 つの動作モード
cpio 3 つの動作モード
動作モード モードの説明
コピーアウト モード このモードバックアップ ファイルをパッケージ化するために使用されます。
cpio はファイルをアーカイブ パッケージにコピーします。 cpio によってパックされるファイル名は標準入力から取得され、標準入力からファイル名のリストが 1 行に 1 つずつ取得されます。 一般に、標準入力から他のコマンドへの標準入力の出力はパイプラインを介して行われるのが一般的です。最も一般的な方法は、find コマンドを使用してファイル名のリストを生成し、それを cpio にパイプすることです。 このようにして、cpio はバックアップされるデータがどこから来たのかを知ることができます。アクセス権限のないディレクトリへの入力によるトラブルを軽減するには、find の後に - Depth オプションを追加する必要があります。
デフォルトでは、cpio はアーカイブ パッケージ ファイルを標準出力に書き込むため、リダイレクト記号 > または >> を使用してアーカイブ パッケージ データ出力をファイルにリダイレクトする必要があります。
コピーイン モード このモードは、アーカイブされたパッケージ ファイルからファイルを復元するために使用されます。
cpio は、標準入力からアーカイブ パッケージを読み取り、アーカイブ パッケージ内のファイルを読み取るか、アーカイブ パッケージの内容を一覧表示します。 cpio は、アーカイブ パッケージから読み取ったデータを標準出力に書き込みます。
コピーパス モード cpio は、あるディレクトリ ツリーから別のディレクトリ ツリーにファイルをコピーします。コピーイン操作とコピーアウト操作を組み合わせますが、アーカイブ パッケージは使用されません。 。 CPIO には、標準入力から読み取るファイルのリストが与えられ、ターゲット ディレクトリは、非オプションのコマンド ライン パラメータとして与えられます。

cpio は、バイナリ、古い ASCII、新しい ASCII、crc、HPUX バイナリ、HPUX 古い ASCII、古い tar、および POSIX.1 tar のアーカイブ形式をサポートします。

cpio の一部のオプションは、対応する動作モードでのみ使用できます。一般的に使用されるコマンド オプションの形式は次のとおりです:

[root@initroot ~]# cpio -ovcB > [file|device] #备份
[root@initroot ~]# cpio -ivcdu < [file|device] #还原
[root@initroot ~]# cpio -ivct < [file|device] #察看
ログイン後にコピー

コピーアウト モード (バックアップ)使用するオプションとパラメータ:

  • #-o: データをファイルまたはデバイスにコピーします。

  • #-B: デフォルトのままにします。ブロックは 5120 バイトまで増やすことができ、デフォルトは 512 バイトです! これの利点は、大きなファイルのストレージを高速化できることです (i ノードの概念を参照してください)

# コピーイン モード (復元) で使用されるオプションとパラメーター:

  • #-i: ファイルまたはデバイスからシステムの外にデータをコピーします

  • -d: ディレクトリを自動的に作成します! cpio を使用してバックアップされたデータは同じディレクトリにない可能性があるため、復元中に cpio が新しいディレクトリを作成できるようにする必要があります。この場合、- d オプションが必要です。 Help!

  • -u: 古いファイルを新しいファイルで自動的に上書きします!

  • #-t: -i オプションが必要です。 cpio で作成されたファイルまたはデバイスの内容を「表示」するために使用できます

#共通のオプションとパラメータ:

    -v: 保存プロセス中にファイル名を画面に表示できるようにします
  • #-c: 新しいポータブル形式の保存方法
  • ##cpio は標準入力からデータを読み取り、処理されたデータを標準出力に出力するため、cpio はパイプおよびリダイレクト シンボルとともに使用する必要があります。
/boot ディレクトリ内のすべてのファイルを検索し、/tmp/boot.cpio アーカイブ ファイルにバックアップします。
[root@initroot ~]# cd /
[root@initroot /]# find boot -print
boot
boot/grub
boot/grub/gfxblacklist.txt
boot/grub/unicode.pf2
boot/grub/locale
...省略...
ログイン後にコピー

find コマンドは、ブート ディレクトリ内のすべてのファイルを検索できます。ファイルを含む ディレクトリと一緒に! ここでのブートは絶対パスではなく相対パスであることに注意してください!

[root@initroot /]# find boot | cpio -ocvB > /tmp/boot.cpio

[root@initroot /]# ls -lh /tmp/boot.cpio
-rw-r--r-- 1 peter peter 193M Feb 10 15:59 /tmp/boot.cpio
[root@initroot ~]# file /tmp/boot.cpio
/tmp/boot.cpio: ASCII cpio archive (pre-SVR4 or odc)
ログイン後にコピー

find boot を使用してファイル名を見つけ、出力をパイプライン経由で cpio に渡します | そして、リダイレクト シンボルを介したデータ > /tmp/boot.cpio ファイルに出力! 上記のパラメータ boot は絶対パスではなく相対パスです。cpio はパスに対して特別な処理を行いません。指定されたデータはすべて受信します。 。ここで絶対パスが使用されている場合、find コマンドの出力も絶対パスになり、cpio が受け取るものも絶対パスになります。次に、ファイルがアーカイブ ファイルからコピーされるとき、それは絶対パスであるため、コピーされたファイルは確実に上書きされます。元の /boot ディレクトリ内のファイルを削除してください。これは非常に危険です。そのため、cpio を指定して find コマンドを使用してファイルをパッケージ化する場合は、必ず相対パスを使用してください。 tar コマンドの -P オプションを参照してください。!!

次に、アーカイブ パッケージ ファイル /tmp/boot.cpio を /root/ ディレクトリに解凍します。

[root@initroot ~]# cd ~
[root@initroot ~]# cpio -idvc < /tmp/boot.cpio
[root@initroot ~]# ls -al /root/boot
ログイン後にコピー

/root であることがわかります。 /boot と /boot の内容はまったく同じです!

cpio はシステム データをテープ ドライブに完全にバックアップできます:

[root@initroot ~]# find / | cpio -ocvB > /dev/st0
ログイン後にコピー

テープ ドライブからデータを復元します:

[root@initroot ~]# cpio -idvc < /dev/st0
ログイン後にコピー

cpio は、/dev にあるデバイス ファイルを含むあらゆるファイルをバックアップできます! これは非常に重要なコマンドです!

cpio は、ファイル名を作成する find などの他のプログラムと連携する必要があるため、cpio は非常に重要なコマンドを実行します。パイプライン コマンドおよびデータ フロー リダイレクトとの違いは密接な関係があります!

実際、/boot ディレクトリ内の /boot/initramfs-xxx または /boot/initrd.img-xxx-generic ファイルも cpio アーカイブです。ファイル。

ファイルを /tmp/initramfs ディレクトリに解凍して、このアーカイブ パッケージに含まれるファイルを確認できます:

[root@initroot ~]# file initrd.img-4.15.0-65-generic
initrd.img-4.15.0-65-generic: ASCII cpio archive (SVR4 with no CRC)
[root@initroot ~]# mkdir /tmp/initramfs
[root@initroot ~]# cd /tmp/initramfs
[root@initroot initramfs]# cpio -idv < /boot/initrd.img-4.15.0-65-generic
.
kernel
kernel/x86
kernel/x86/microcode
kernel/x86/microcode/AuthenticAMD.bin
56 blocks
ログイン後にコピー

ここでは -c オプションが削除されていることに注意してください。 c オプションを使用すると、cpio は次のプロンプトを表示します:

cpio: premature end of file
ログイン後にコピー

-c オプションを削除して、アーカイブ パッケージ ファイルを正常に解凍してください。

関連する推奨事項: 「

Linux ビデオ チュートリアル

以上がLinux cpio の 3 つの動作モードとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CentosとUbuntuの違い CentosとUbuntuの違い Apr 14, 2025 pm 09:09 PM

Centosとubuntuの重要な違いは次のとおりです。起源(CentosはRed Hat、for Enterprises、UbuntuはDebianに由来します。個人用のDebianに由来します)、パッケージ管理(CentosはYumを使用し、安定性に焦点を当てます。チュートリアルとドキュメント)、使用(Centosはサーバーに偏っています。Ubuntuはサーバーやデスクトップに適しています)、その他の違いにはインストールのシンプルさが含まれます(Centos is Thin)

Centosをインストールする方法 Centosをインストールする方法 Apr 14, 2025 pm 09:03 PM

Centosのインストール手順:ISO画像をダウンロードし、起動可能なメディアを燃やします。起動してインストールソースを選択します。言語とキーボードのレイアウトを選択します。ネットワークを構成します。ハードディスクをパーティション化します。システムクロックを設定します。ルートユーザーを作成します。ソフトウェアパッケージを選択します。インストールを開始します。インストールが完了した後、ハードディスクから再起動して起動します。

メンテナンスを停止した後のCentosの選択 メンテナンスを停止した後のCentosの選択 Apr 14, 2025 pm 08:51 PM

Centosは廃止されました、代替品には次のものが含まれます。1。RockyLinux(最高の互換性)。 2。アルマリン(Centosと互換性); 3。Ubuntuサーバー(設定が必要); 4。RedHat Enterprise Linux(コマーシャルバージョン、有料ライセンス); 5。OracleLinux(CentosとRhelと互換性があります)。移行する場合、考慮事項は次のとおりです。互換性、可用性、サポート、コスト、およびコミュニティサポート。

Dockerデスクトップの使用方法 Dockerデスクトップの使用方法 Apr 15, 2025 am 11:45 AM

Dockerデスクトップの使用方法は? Dockerデスクトップは、ローカルマシンでDockerコンテナを実行するためのツールです。使用する手順には次のものがあります。1。Dockerデスクトップをインストールします。 2。Dockerデスクトップを開始します。 3。Docker Imageを作成します(DockerFileを使用); 4. Docker画像をビルド(Docker Buildを使用); 5。Dockerコンテナを実行します(Docker Runを使用)。

Dockerの原則の詳細な説明 Dockerの原則の詳細な説明 Apr 14, 2025 pm 11:57 PM

DockerはLinuxカーネル機能を使用して、効率的で孤立したアプリケーションランニング環境を提供します。その作業原則は次のとおりです。1。ミラーは、アプリケーションを実行するために必要なすべてを含む読み取り専用テンプレートとして使用されます。 2。ユニオンファイルシステム(UnionFS)は、違いを保存するだけで、スペースを節約し、高速化する複数のファイルシステムをスタックします。 3.デーモンはミラーとコンテナを管理し、クライアントはそれらをインタラクションに使用します。 4。名前空間とcgroupsは、コンテナの分離とリソースの制限を実装します。 5.複数のネットワークモードは、コンテナの相互接続をサポートします。これらのコア概念を理解することによってのみ、Dockerをよりよく利用できます。

VSCODEに必要なコンピューター構成 VSCODEに必要なコンピューター構成 Apr 15, 2025 pm 09:48 PM

VSコードシステムの要件:オペレーティングシステム:オペレーティングシステム:Windows 10以降、MACOS 10.12以上、Linux Distributionプロセッサ:最小1.6 GHz、推奨2.0 GHz以上のメモリ:最小512 MB、推奨4 GB以上のストレージスペース:最低250 MB以上:その他の要件を推奨:安定ネットワーク接続、XORG/WAYLAND(Linux)

Centosがメンテナンスを停止した後の対処方法 Centosがメンテナンスを停止した後の対処方法 Apr 14, 2025 pm 08:48 PM

CentOSが停止した後、ユーザーは次の手段を採用して対処できます。Almalinux、Rocky Linux、Centosストリームなどの互換性のある分布を選択します。商業分布に移行する:Red Hat Enterprise Linux、Oracle Linuxなど。 Centos 9ストリームへのアップグレード:ローリングディストリビューション、最新のテクノロジーを提供します。 Ubuntu、Debianなど、他のLinuxディストリビューションを選択します。コンテナ、仮想マシン、クラウドプラットフォームなどの他のオプションを評価します。

Docker画像が失敗した場合はどうすればよいですか Docker画像が失敗した場合はどうすればよいですか Apr 15, 2025 am 11:21 AM

障害のあるDocker画像ビルドのトラブルシューティング手順:DockerFileの構文と依存関係バージョンを確認します。ビルドコンテキストに必要なソースコードと依存関係が含まれているかどうかを確認します。エラーの詳細については、ビルドログを表示します。 -targetオプションを使用して、階層フェーズを構築して障害点を識別します。 Dockerエンジンの最新バージョンを使用してください。 -t [image-name]:デバッグモードで画像を作成して、問題をデバッグします。ディスクスペースを確認し、十分であることを確認してください。 Selinuxを無効にして、ビルドプロセスへの干渉を防ぎます。コミュニティプラットフォームに助けを求め、DockerFilesを提供し、より具体的な提案のためにログの説明を作成します。

See all articles