2016-09-21 6 views
1

私は5つの非常に大きな100GBのファイルがあるとします。 file1file2file3file4file5Linuxで大きなファイルを追加/連結する場合

私はfileAllにそれらを結合したい場合は、速度は、次の2つの方法の違い(読み取り/書き込み)がありますか? (の今を無視作業ディスク容量をしてみましょう)

猫とリダイレクト:

cat file1 file2 file3 file4 file5 > fileAll

猫、追加、および名前の変更/移動:

cat file2 file3 file4 file5 >> file1

mv file1 fileAll

マイassumtion:

私はcatはそれが(この例では、読書の500ギガバイトの価値の合計)連結されていることを完全にそれぞれのファイルを読み込み、その後>が書き込みの(合計500ギガバイトの価値があるすべてのものを書き出しますリダイレクトすると仮定)。

catは、1つ少ないファイル(合計400GBの読み込み量)で読み込み、>>を追加すると、追加するファイルの後ろのスペースに書き出すだけです(合計400GBの価値)。

添付ファイル全体が読み込まれる必要はなく、そのファイルの末尾に簡単に書き込むことができます。

+0

私は、ファイルをスキャンして終わりを見つけなければならないと確信しています。 – 123

+0

それで、速度の向上はありませんか?上記の例では、500GBで読み込み、400GBを書き出しますか? –

+0

1GBのファイルで試してみてください。 – GhostCat

答えて

0

あなたの前提は正しいです。 「追加」は、ファイルの終わりへの1回の「シーク」コールを必要とするだけです。ケース2ではfile1から何も読み取られません。

関連する問題