ファイルを分割し、複数の場所に部分を保存する方法は?

ファイルを分割し、複数の場所に部分を保存する方法は?

大きなファイルを小さな塊に分割し、各部分を別々の場所に書き込む方法は?

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

関連情報