파일을 분할하고 여러 위치에 부분을 저장하는 방법은 무엇입니까?

파일을 분할하고 여러 위치에 부분을 저장하는 방법은 무엇입니까?

큰 파일을 작은 덩어리로 나누고 각 부분을 별도의 위치에 쓰는 방법은 무엇입니까?

split이 명령은 모든 파일을 한 위치에만 출력하는 것 같습니다.

제가 해야 할 작업의 내용은 다음과 같습니다. 압축된 복제 이미지를 생성하여 대용량 하드 드라이브를 백업해야 합니다. 압축된 이미지를 전체적으로 저장할 수 있는 외장 하드 드라이브가 없습니다. 그래서 이미지를 분할하여 여러 위치에 쓸 수 있는 방법이 필요합니다.

이미지 복제 및 압축에 대한 나의 생각은 다음과 같습니다.

dd if=/dev/sda conv=sync,noerror bs=64K | gzip -c | split -b 110g - <Multiple locations for each piece>

제가 가진 옵션 중 하나는 모든 외부 하드 드라이브가 함께 연결된 소프트웨어 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

관련 정보