cpioフォルダにすでに存在するファイルを同じ名前の新しいファイルで上書きしたいと思います。私の仕事のパラメータを見つけるのに問題があります。解決策がある可能性があるこのページを見つけましたが、わかりません。
https://drumperl.wordpress.com/2014/01/12/forcing-cpio-to-overwrite-files/
とにかく、私はこれを試しました:
echo usr/share/plymouth/themes/homeworld/debian.png | cpio -pumd /home/ziomario/Scrivania/PassT-Cubic/kernels/initrd.img-5.10.0-18-amd64
cpioアーカイブ(initrd.img-5.10.0-18-amd64)にコピーするファイルの名前は「debian.png」で、同じ名前のファイルがあることに注意してください。
上記で実行したコマンドは、次のエラーを発生させます。
"initrd.img-5.10.0-18-amd64"が存在しますが、aaディレクトリにありません。 「開く」機能が失敗しました:ディレクトリではありません。
とても感謝しています。
答え1
作成したコマンドには、cpio アーカイブファイルではなくディレクトリが必要です。
この-p
フラグはcpio
コピーパスモードで操作を実行します。 ~からcpio のマニュアルページ:
コピー転送モード
コピーパスモードでは、cpioは実際にはアーカイブを使用せずにコピーとコピーステップを組み合わせて、あるディレクトリツリーから別のディレクトリツリーにファイルをコピーします。標準入力からコピーするファイルのリストを読みます。ファイルがコピーされるディレクトリはオプションではなく引数として提供されます。
これは、cpioアーカイブを抽出し、抽出したディレクトリのファイルを置き換えたい場合に便利です。
cpio
アーカイブのファイルを上書きする簡単な方法はありません。アーカイブを抽出し、ファイルを置き換えて(コマンドが役に立つ可能性がある)、新しいアーカイブを作成する必要があります。