Divide arquivos grandes em arquivos menores [duplicados]

1

Como faço para quebrar um arquivo grande em arquivos menores?

E como posso enviar os arquivos de peça em vários computadores através de pssh

E como faço para recuperar esses arquivos no computador-cliente e remontá-los como o arquivo original?

    
por Tharmalingam Mayuran 22.12.2017 / 09:49

1 resposta

2

Você pode usar o utilitário split no Linux para dividir um arquivo de acordo com o tamanho ou o número de linhas.

% bl0ck_qu0te%

Explicação:

% bl0ck_qu0te%

Opções:

% bl0ck_qu0te%

Exemplos:

% bl0ck_qu0te%

(onde o nome do arquivo de entrada é abc e o último argumento é o prefixo de saída)

% bl0ck_qu0te%

Os comandos divididos geram partes nomeadas: abc.000, abc.001 ...

Para remontar novamente as partes geradas, você pode usar, por exemplo:

$ cat abc.* > abc_2

(assumindo que o shell classifica os resultados da globalização do shell - e o número de partes não excede o limite de argumentos dependentes do sistema)

Você pode comparar o resultado via:

$ cmp abc abc_2 $ echo $?

(que deve produzir 0)

Alternativamente, você pode usar uma combinação de find / sort / xargs para montar as peças:

$ find -maxdepth 1 -type f -name 'abc.*' | sort | xargs cat > abc_3

% bl0ck_qu0te%

pssh:

[feddy@localhost ~]$ pscp.pssh --help
Usage: pscp.pssh [OPTIONS] local remote

Options:
  --version             show program's version number and exit
  --help                show this help message and exit
  -h HOST_FILE, --hosts=HOST_FILE
                        hosts file (each line "[user@]host[:port]")
  -H HOST_STRING, --host=HOST_STRING
                        additional host entries ("[user@]host[:port]")
  -l USER, --user=USER  username (OPTIONAL)
  -p PAR, --par=PAR     max number of parallel threads (OPTIONAL)
  -o OUTDIR, --outdir=OUTDIR
                        output directory for stdout files (OPTIONAL)
  -e ERRDIR, --errdir=ERRDIR
                        output directory for stderr files (OPTIONAL)
  -t TIMEOUT, --timeout=TIMEOUT
                        timeout (secs) (0 = no timeout) per host (OPTIONAL)
  -O OPTION, --option=OPTION
                        SSH option (OPTIONAL)
  -v, --verbose         turn on warning and diagnostic messages (OPTIONAL)
  -A, --askpass         Ask for a password (OPTIONAL)
  -x ARGS, --extra-args=ARGS
                        Extra command-line arguments, with processing for
                        spaces, quotes, and backslashes
  -X ARG, --extra-arg=ARG
                        Extra command-line argument
  -r, --recursive       recusively copy directories (OPTIONAL)

Example: pscp -h hosts.txt -l irb2 foo.txt /home/irb2/foo.txt

Exemplo (para o seu caso):

[feddy@localhost ~]$ touch ko001 ko002 ko003
[feddy@localhost ~]$ pscp.pssh -AH feddy@localhost ko00* Downloads/
Warning: do not enter your password if anyone else has superuser privileges or access to your account.
Password:
[1] 20:26:42 [SUCCESS] feddy@localhost
[feddy@localhost ~]$ ls Downloads/
ko001   ko002   ko003

Agora, finalmente, você pode usar o utilitário cat ou find para juntar ou remontar todos os arquivos (como já mencionado acima)

    
por Neeraj Pal 22.12.2017 / 15:00