大きなファイルを小さな塊に分割し、各部分を別々の場所に書き込む方法は?
split
このコマンドは、すべてのファイルを1つの場所にのみ出力するようです。
私がしなければならない作業の内容は次のとおりです。圧縮複製イメージを作成して大容量のハードドライブをバックアップする必要があります。圧縮された画像を完全に保存できる外付けハードドライブはありません。そのため、画像を分割して複数の場所に書き込む方法が必要です。
イメージの複製と圧縮に関する私の考えは次のとおりです。
dd if=/dev/sda conv=sync,noerror bs=64K | gzip -c | split -b 110g - <Multiple locations for each piece>
私が持っているオプションの1つは、すべての外付けハードドライブが一緒に接続されたソフトウェアRAID 0パーティションを作成し、ここに圧縮イメージを書き込むことでした。しかし、(組み込みのgnu / linuxコマンドを使用する)より簡単な解決策があれば良いでしょう。
また、一度に大きなハードディスクの小さな部分だけを追加し、ループ内で繰り返し実行することもできます(ddのナビゲーションと計算引数を使用)。しかし、gzipで圧縮しないと、単一の110Gb外付けハードドライブがどれだけのブロックを収容できるかはわかりません。
ベストアンサー1
split
私の考えでは'を使わなくてもできると思う--filter=COMMAND
。
... | split -b <SIZE> -d - part --filter=./split-filter
./split-filter
似たようなものをどこで見つけることができますか?
#!/bin/bash
set -e
n="${FILE#part}"
case $((10#$n%3)) in
0)
dd bs=64K >"path1/$FILE"
;;
1)
dd bs=64K >"path2/$FILE"
;;
2)
dd bs=64K >"path3/$FILE"
;;
esac