Split não está disponível?

1

Eu apenas tentei executar um simples shell script no meu servidor Readynas rodando Debian, e parece que o comando split não está disponível.

Este é um servidor com o qual eu não consigo mexer muito, então se houver uma maneira de executar split sem risco de quebrar outros recursos nativos do ReadyNAS, eu ficaria super feliz.

Obrigado

    
por Industrial 25.09.2011 / 22:48

1 resposta

5

split é um utilitário padrão, incluído no pacote coreutils . Este pacote tem a prioridade “required” (e é marcado como “essencial”), então uma instalação normal do Debian o teria.

Eu acho que o seu servidor está executando utilitários BusyBox . O BusyBox é um conjunto de utilitários projetados para sistemas com pouco espaço em disco ou pouca memória. Muitos de seus recursos são opcionais, e o pacote BusyBox normal do Debian não inclui o utilitário split (presumivelmente porque não é usado com frequência).

Você pode emular alguns usos de split com o utilitário head e um pouco de programação de shell. Aqui está um script rápido e sujo para dividir a entrada em blocos de tamanho fixo:

#!/bin/sh
i=1000000001          # Below we'll strip away the leading 1; this is
                      # a trick to have leading zeroes in the file names.
prefix=$1             # The files will be called ${prefix}000000001, etc.
chunk_size=$2         # in bytes, or 42k or 42m for kB and MB respectively
while
  head -q -c "$chunk_size" >"$prefix${i#1}"
  [ -s "$prefix${i#1}" ]   # Stop when we make an empty chunk.
do
  i=$((i+1))
done
rm "$prefix${i#1}"         # Remove the last, zero-sized chunk.

Armazene esse script como simple_split . Exemplo de uso:

tar -cf - /big/dir | simple_split foo.tar- 1m

Este comando cria arquivos de 1 MB de tamanho chamados foo.tar-000000001 , foo.tar-000000002 , etc. Você pode montá-los com cat ; observe que, graças ao formato de largura fixa dos números, os arquivos são ordenados em ordem lexical de seus nomes.

cat foo.tar-????????? | tar -tf -
    
por 25.09.2011 / 23:04

Tags