Como dividir arquivos e salvar partes em vários locais?

3

Como divido um arquivo grande em vários fragmentos menores e escrevo cada parte dele em locais separados?

O comando

split parece exibir apenas todos os arquivos em um único local.

O contexto que preciso fazer é o seguinte: Eu tenho que fazer backup de um grande disco rígido criando sua imagem clone compactada. Nenhum disco rígido externo que eu tenho pode caber a imagem compactada como uma única peça. Então eu preciso de uma maneira de dividir e escrever a imagem em vários locais.

Para clonar e compactar a imagem, o que eu tinha em mente é o seguinte.

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

Uma opção que tenho é criar uma partição de software RAID 0 usando todos os hardwares externos conectados e gravar nela a imagem compactada. Mas seria legal se houvesse uma solução mais simples (usando comandos embutidos do gnu / linux).

Eu também poderia dd apenas uma pequena seção do disco rígido grande de cada vez, e repetidamente fazê-lo em um loop (usando argumentos de busca e contagem de dd). Mas a menos que eu o comprima com o gzip, eu não saberia o quanto o pedaço pode caber em um único hardisk externo de 110Gb.

    
por indiajoe 15.04.2015 / 02:24

1 resposta

4

Acho que você pode usar o split ' --filter=COMMAND

.

... | split -b <SIZE> -d - part --filter=./split-filter

onde ./split-filter é algo como

#!/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
    
por 15.04.2015 / 04:29