このコマンド( `tar`)は実際に何をしますか?もっと良い方法がありますか?

このコマンド( `tar`)は実際に何をしますか?もっと良い方法がありますか?

配布リポジトリの作成に関するいくつかのドキュメントを見ています。ただし、次のコマンドの機能を正確に理解することはできません。

# cd /mnt/
# ls
centos-1  centos-2  centos-3
# for i in 1 2 3 
> do
> cd /mnt/centos-$i
> tar cpf - . | ( cd /var/ftp/ks/centos/; tar xpf - )
> done

/mnt/centos-<index>私の(明らかに間違った)要約は、マウントされた各CD()を繰り返してtar権限を保持するフォルダを作成することです。次に、tar権限を維持しながらファイルを別のフォルダに再抽出します。

それでは、なぜこれが起こるのですか?本当に良い方法はありませんか?あるいは、アイデア全体が欠けている可能性があります。

ベストアンサー1

この手順でcpの代わりにtar(またはcpio)を使用することをお勧めするのは、これらのツールがどのように機能するかです。

cp は各ファイルオブジェクトに対して順番に動作し、ディスクからそのオブジェクトを読み取り、新しい場所に書き込みます。ソースとターゲットの場所がディスクに近づかない可能性があるため、場所間で多くの検索が発生する可能性があります。

tarとcpioはできるだけ多くの内容を一度に読み、アーカイブに書き込みます。これは、ソースファイルを順番に読み込み、ターゲットファイルを順番に作成し(もちろんプロセス切り替えを許可する)、ルックアップ回数を減らし、時間を節約することを意味します。

おすすめ記事