alternativa smbclient para arquivos grandes

11

Estou usando o smbclient para transferir um conjunto de arquivos grandes (80 GB) todas as noites de um sistema Linux para um compartilhamento do Windows. Ultimamente, por qualquer motivo, tenho recebido tempos limite de E / S:

cli_push returned NT_STATUS_IO_TIMEOUT

o que faz com que a transferência ativa de arquivos seja abortada e excluída do compartilhamento do Windows.

Isso pode ser devido ao erro 8498 do Samba não resolvido (ou talvez não). O sistema Windows não está sob meu controle, portanto não consigo instalar um servidor ssh (para usar scp ou sftp) e não quero depender da implementação do NFS pela Microsoft.

Existe outra alternativa simples e padrão que me permita mover 80GB de dados de maneira confiável do Linux para o Windows pela rede regularmente (a rede é ethernet de GB, portanto a largura de banda não é um problema)?

Ex Umbris
fonte
considere usar ferramentas como o rsync com o modo parcial ativado. Até o WinScp também deve ajudar. Ou forneça um armazenamento NAS comum com NFS no Unix e CIFS no Windows, para que não seja necessário transferir tudo, caso seja a mesma rede. O melhor é configurar um torrent, encerrar a outra rede. ;-) #
Nikhil Mulley
apenas tropeçou na pesquisa "programa de transferência de arquivos 123go" no google
Nikhil Mulley 17/02/2012

Respostas:

9

Tente usar essas opções de soquete no smbclient

smbclient --socket-options='TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072'

Eu copio regularmente arquivos de mais de 40 GB do Windows para o servidor de mídia Linux sem erros, a taxa de transferência típica é de 85 MB / s com máquinas conectadas via switch gigabit.

bsd
fonte
1
Obrigado por isso - isso se livrou do erro para mim; e copiou corretamente um arquivo 2G de um Ubunutu para um compartilhamento do Windows.
precisa saber é
Eu tentei esta e outras variações de ajustar os valores para SO_RCVBUF e SO_SNDBUF sem sorte. O arquivo que estou tentando enviar é de cerca de 8gig em uma rede local com perda zero de pacotes.
Mhvelplund 29/02
2

Usando curl

Estou executando o smbclient versão 4.9.4 tentando transferir um arquivo 97 MiB do Arch Linux para o Windows e chamando o smbclient --socket-options='TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072' como o usuário recomendado pelo bsd ainda falhou cli_push returned NT_STATUS_IO_TIMEOUT.

Desde a versão 7.40 , o curl suporta o protocolo .

Portanto, usei isso para fazer upload moderately_sized_filedo Linux para o serviço OurRemoteDirectoryna máquina Windows em 172.16.17.52:

curl --upload-file /home/me/moderately_sized_file --user "OurWindowsDomain/MyUserName:MyPassword" smb://172.16.17.52/OurRemoteDirectory/Path/To/Dir/

Para mim, o curl carregou o arquivo de forma confiável a cada vez e também exibe o progresso do upload, o que é bom.

Observe que o curl ainda não suporta a criação de diretórios no host remoto.

Consequentemente, pode ser necessário criar /Path/To/Dir/usando o seguinte comando (mas smbclient mkdirfuncionou sem problemas até agora):

smbclient //172.16.17.52/OurRemoteDirectory/ -U MyUserName%MyPassword -W OurWindowsDomain -c 'mkdir Path/To/Dir/'
Matthias Braun
fonte
0

Talvez você possa instalar um servidor ftp no seu servidor linux e pedir ao administrador do Windows para enviar o arquivo todas as noites?

O FTP possui algumas funções úteis para transferir arquivos grandes e um mecanismo de pausa / retomada. Para arquivos tão grandes, você deve ter o cuidado de não ter um hardware de rede desligando conexões inativas muito cedo. Pode fechar sua conexão de controle antes que a transferência termine.

Coren
fonte
Arquivos estão indo para o outro lado, a partir do Linux para o Windows
Ex Umbris
0

E se

smbclient --socket-options='TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072'

ainda retorna cli_push returned NT_STATUS_IO_TIMEOUT

basta adicionar uma opção de tempo limite -t <timeout in seconds>

Isso me ajuda a copiar arquivos grandes (> 200 TB) de máquinas virtuais

Igor Voskresenskiy
fonte