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
それも機能しません。
何について:
dd if=/dev/shm/test bs=1G >>/data/sdb/test
dd if=/dev/shm/test of=/data/sdb/test bs=1G oflag=append conv=notrunc
それはあなたが使うべきだったと私が思うものです。
REF: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=373736
スパースホールをファイルに追加する簡単な方法があります。
truncate
はddよりもはるかに高速です。 10バイトでファイルを大きくするには、次のようにします。truncate -s +10 file.txt
Linuxカーネル4.1では、_FALLOC_FL_INSERT_RANGE
_オプションが追加されました。 fallocate(2)
から man page :
モードでFALLOC_FL_INSERT_RANGEフラグ(Linux 4.1以降で使用可能)を指定すると、既存のデータを上書きせずにファイルサイズ内に穴を挿入することにより、ファイルスペースが増加します。ホールはオフセットから始まり、lenバイトの間続きます。ファイル内に穴を挿入すると、オフセットで始まるファイルの内容が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
_は現在のファイルサイズです。