ddによってファイルにデータを追加する方法は?


19

SSDに保存されているファイルに新しいデータを追加したい。

dd if=/dev/shm/test of=/data/sdb/test bs=1G oflag=append

ただし、df -hは、ddコマンドが常にテストファイルを上書きすることを示し、代わりにテストファイルに新しいデータを追加します。私も試しました

dd if=/dev/shm/test of=/data/sdb/test bs=1G conv=notrunc

それも機能しません。

回答:


12

どうですか:

 dd if=/dev/shm/test bs=1G >>/data/sdb/test

ソリューションが機能します。ありがとう。しかし、私のソリューションが機能しない理由を知っていますか?manページを確認しました。理由が見つかりません。ありがとう。
市14


1

Linuxカーネル4.1 FALLOC_FL_INSERT_RANGEオプションが追加されました。fallocate(2) manページから:

モードでFALLOC_FL_INSERT_RANGEフラグ(Linux 4.1以降で使用可能)を指定すると、既存のデータを上書きせずにファイルサイズ内に穴を挿入することでファイルスペースが増加します。穴はオフセットから始まり、lenバイト続きます。ファイル内に穴を挿入すると、offsetから始まるファイルの内容がlenバイトだけ上方に(つまり、より高いファイルオフセットに)シフトされます。ファイル内に穴を挿入すると、ファイルサイズがlenバイト増加します。

そして最近、このオプションのサポートが追加されましutil-linux

   -i, --insert-range
          Insert a hole of length bytes from offset, shifting existing
          data.

したがって、util-linuxバージョン2.30がリリースされ、Linuxディストリビューションがこのバージョンに更新されると、次のコマンドを実行してフラッシュ内のファイルサイズを増やすことができます。

fallocate -i -l 1G -o 128M /path/to/file

どこ128Mが現在のファイルサイズです。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.