Como copiar dados grandes pela rede?

3

Eu tenho um HP Microserver gen 8 com Centos 7 e apenas um disco rígido na área da baía, 2 TB, montado como NTFS.

Estou tentando copiar arquivos (cerca de 100 GB de uma vez) pela rede local.

Eu tentei o seguinte:

  • via Samba
  • via SCP
  • via Rsync

Problemas comuns ao longo do caminho para esses métodos geralmente são com essas mensagens de erro:

  • O sistema é somente leitura com erro I \ O (substituí o disco rígido, porque é mais provável que ele esteja causando esse problema, embora não esteja certo)
  • O disco está cheio (isso acabou de ser visto e eu estava usando Samba ), o disco está 92% vazio.
  • mkstemp falha operação não permitida

Então, estou pensando que talvez exista uma maneira melhor de copiar dados em massa. existe?

Além disso, tentei fazer isso:

rsync -rvz -e "ssh" * [email protected]:/folder

e eu recebi este erro:

rsync: writefd_unbuffered failed to write 16385 bytes [sender]: Broken pipe (32)
rsync: write failed on "/folder/movie.mkv": Input/output error (5)
rsync error: error in file IO (code 11) at receiver.c(322) [receiver=3.0.9]
rsync: connection unexpectedly closed (490 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-47/rsync/io.c(453) [sender=2.6.9]

A resposta ao torrent não poderia ser a única maneira válida de copiar essa quantidade de dados; Eu preciso de uma solução baseada em Linux, sem torrent.

-

Atualização:

Depois que o @zeppelin sugeriu tentar um arquivo grande em vez de muitos arquivos de 4-5GB, fiz um grande arquivo usando: tar -zcvf movies.tar.gz *

uma vez eu tive o arquivo:

ls -alh movies.tar.gz 
-rw-r--r--  1 Abude  staff    77G Nov 11 13:54 movies.tar.gz

Eu fiz o rsync e recebi o seguinte problema:

rsync -avz -e 'ssh' --progress movies.tar.gz [email protected]:/nas/media
/etc/profile.d/lang.sh: line 19: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
building file list ... 
1 file to consider
movies.tar.gz
 82671089587 100%   25.36MB/s    0:51:49 (xfer#1, to-check=0/1)
rsync: mkstemp "/nas/media/.movies.tar.gz.ezRUOM" failed: Operation not permitted (1)

sent 82698841857 bytes  received 42 bytes  26586993.06 bytes/sec
total size is 82671089587  speedup is 1.00
rsync error: some files could not be transferred (code 23) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-47/rsync/main.c(992) [sender=2.6.9]
    
por Abude 06.11.2016 / 12:35

7 respostas

1

Atualizar

O erro de permissão (abaixo) resumiu-se a remover o sinalizador '-a' (--archive) do comando rsync , para impedir que ele tentasse preservar a propriedade e as permissões nos arquivos copiados .

Depois de fazer o teste local 'dd', um erro de E / S de baixo nível foi detectado, provavelmente causado por um disco defeituoso, resultando em corrupção do sistema de arquivos.

Operation not permitted (1)

O último erro que você vê é provavelmente um problema de permissão simples, ou seja, o usuário 'abude' simplesmente não tem acesso de gravação a / nas / media / ), tente tornar esta pasta public gravável:

 chmod a+rwx /nas/media

e repita o seu comando rsync.

------- (desconsidere abaixo, como OP está usando uma partição NTFS agora) -----

Com base nisso:

I have a HP Microserver gen 8 with Centos 7 and only one hard disk in the >bay area, 2 TB, mounted as fat32.

...

rsync: write failed on "/folder/movie.mkv": Input/output error (5) rsync error: error in file IO (code 11) at receiver.c(322) >>[receiver=3.0.9]

e seu comentário posterior

@GMaster any file under ~4GB has no errors. i even can push this number to about 8-10GB but not sure though. – Abude 8 hours ago

Eu assumo que o problema que você tem é que você tente rsync (pelo menos alguns) arquivos de 4GB + no sistema de arquivos FAT32, o que não é possível fazer, pois isso é um limite rígido tamanho do arquivo para FAT32.

Maximum file size 2^32 minus 1 bytes

( link )

Então o rsync reporta a você um erro no arquivo IO:

11     Error in file I/O

( link )

As opções que você tem são:

  • Exclua esses arquivos grandes da sincronização com - max-size = SIZE rsync opção (e depois lidar com eles manualmente de alguma forma)

  • Divida-os em partes menores (ou seja, com encontrar e divisão )

  • Converta seu sistema de arquivos para NTFS ou Ext4 e.t.c. (veja, por exemplo, link )

por 10.11.2016 / 21:56
6

Para copiar grandes blocos de dados, uma torrente privada pode estar falando subjetivamente sobre uma das melhores escolhas.

Este não é um lugar para fazer um tutorial de torrent embora.

Você pode pesquisar aqui por exemplo ou procurar algo como:

How to create a private torrent

    
por 06.11.2016 / 12:54
3

rsync é a melhor solução. Eu recomendo que você remova o -z para que a compressão seja ignorada. A compactação pode ocupar mais espaço em disco para arquivos compactados temporários. Então você deveria estar usando:

rsync -av -e "ssh" * [email protected]:/folder

    
por 10.11.2016 / 00:47
1

Supondo que você esteja em uma rede local ou protegida, você pode transmitir os dados diretamente com netcat ou nc dependendo da sua distro.

Na máquina de destino:

nc -l 0.0.0.0 45999 | tar -xz

Na máquina de origem:

tar -cz the_files_or_folder | nc <target IP> 45999

Isso irá tarar e compactar todos os arquivos desejados e canalizá-los diretamente (não criptografados, portanto, a rede local ou segura) para a máquina de destino através do TCP, no lado receptor nc estará escutando e canalizá-los para tar para descompactar e desarquivar. Você pode remover o argumento z no ambos enviando e recebendo comandos tar para omitir a compactação e enviar os dados como estão.

Também na máquina de destino IP 0.0.0.0 vai escutar em todas as interfaces, isso pode ser um pouco mais inseguro se você tiver outras interfaces, para evitar isso basta substituir o IP desejado pela máquina emissora.

    
por 09.11.2016 / 23:49
0

erro: erro no arquivo IO (código 11) no receptor.c (322) 1. é / pasta gravável para você?

rsync: conexão fechada inesperadamente (490 bytes recebidos até agora) [remetente] 2. SSH caiu. você pode ssh em? keyless ou pw?

Você disse "Estou tentando copiar arquivos (cerca de 100 GB de uma só vez) pela rede local." Espero não ter lido errado. IP de destino é IP não roteável (192.168.0.106)? Pode ser que você esteja em VPN.

rsync -avr * user@<remoteIP>:/folder

use --bwlimit para "desacelerar" se você cair da conexão. use --partial para retomar as tentativas interrompidas

    
por 10.11.2016 / 18:00
0

Configure um servidor FTP na máquina com os dados. Você só precisa executá-lo pelo tempo necessário para baixar o arquivo e, em seguida, encerrá-lo. Você poderia usar uma ferramenta como wget para buscá-lo. Dessa forma, se o download for interrompido, pode ser retomado sem perder tempo.

    
por 11.11.2016 / 16:47
-2

Tente usar o dd pela rede. dd if=/dev/sda | ssh [email protected] "dd of=/dev/sdb" Isso faz uma cópia do SDA para sdb

    
por 06.11.2016 / 12:49