ファイルシステムのスペースを使わずにLinuxで2つのファイルを結合(接続)したいと思います。できますか?
A + B = AB
ファイルはファイルシステムのAB
セクタまたはセグメントを使用しますA
。B
これは可能ですか?
両方のファイルをコピーせずに(遅いプロセスです)gparted
新しいファイルとして認識できますか?AB
答え1
私はあなたが大きなファイルに分割された非常に大きなディスクイメージを持っていて、そのf1
ディスクイメージのパーティションを変更したいとします。その後、すべてのファイルのサイズが512の倍数であると仮定すると、rootとしてこれを実行できます。f2
f3
offset=0
for f in f1 f2 f3; do
loop=$(losetup -f --show -- "$f")
size=$(blockdev --getsz "$loop")
printf '%s\n' "$offset $size linear $loop 0"
offset=$(( offset + size ))
done | dmsetup create myimg
その後、後で作成されたパーティションを実行、フォーマット、およびgparted /dev/mapper/myimg
マウントすることもできます。
デバイスを取り外すには:
- すべてのファイルシステムやその他のリソースがマウント解除/解除されていることを確認してください。
dmsetup remove myimg
losetup -d
すべてのループデバイスで実行されます。
答え2
プロセスの置き換え複数のファイルをリンクして、1つのプロセスの1つのファイルのように見せることができますsome_program <(cat A B)
。
gparted
しかし、入力ファイルを変更するように設計された他のプログラムと一緒に使用することは意味がありません。これは実際のファイルではなく、FIFO、匿名パイプ、一時ファイルです。生成された「ファイル」は<()
読み取り専用であり、検索することはできません(つまり、順番にのみ読み取ることができます)。
プロセスの交換にはstdoutをプロセスにリダイレクトすることも含まれますが、実際のブロックデバイスまたはディスクイメージファイルを期待する>()
この方法はまだ役に立ちません。gparted