Estoy usando smbclient para transferir un conjunto de archivos grandes (80 GB) todas las noches desde un sistema Linux a un recurso compartido de Windows. Últimamente, por cualquier razón, he estado recibiendo tiempos de espera de E / S:
cli_push returned NT_STATUS_IO_TIMEOUT
lo que hace que la transferencia de archivos activa sea anulada y eliminada del recurso compartido de Windows.
Esto puede deberse al error no resuelto 8498 de Samba (o tal vez no). El sistema de Windows no está bajo mi control, por lo que no puedo instalar un servidor ssh (para usar scp o sftp) y no quiero depender de la implementación de NFS de Microsoft.
¿Existe otra alternativa simple y estándar que me permita mover 80 GB de datos de manera confiable de Linux a Windows a través de la red de manera regular (la red es GB ethernet, por lo que el ancho de banda no es un problema)?
fuente
Respuestas:
Intente usar estas opciones de socket en smbclient
Copio regularmente archivos de más de 40 GB de Windows al servidor de medios Linux sin error, la tasa de transferencia típica es de 85 MB / s con máquinas conectadas a través de un conmutador gigabit.
fuente
Utilizando
curl
Estoy ejecutando smbclient versión 4.9.4 tratando de transferir un archivo MiB 97 de Arch Linux a Windows y llamo a smbclient
--socket-options='TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072'
como el usuario bsd recomendado todavía fallacli_push returned NT_STATUS_IO_TIMEOUT
.Desde la versión 7.40 , curl admite el protocolo smb .
Por lo tanto, utilicé esto para cargar
moderately_sized_file
desde Linux al servicioOurRemoteDirectory
en la máquina de Windows en172.16.17.52
:Para mí, curl ha subido el archivo de manera confiable cada vez y también muestra el progreso de carga, lo cual es bueno.
Tenga en cuenta que curl aún no admite la creación de directorios en el host remoto.
En consecuencia, es posible que deba crear
/Path/To/Dir/
utilizando el siguiente comando (perosmbclient mkdir
hasta ahora ha funcionado sin problemas):fuente
¿Quizás pueda instalar un servidor ftp en su servidor Linux y pedirle al administrador de Windows que le envíe el archivo todas las noches?
FTP tiene algunas funciones útiles para transferir archivos grandes y un mecanismo de pausa / reanudación. Para un archivo tan grande, debe tener cuidado de no tener un hardware de red que cierre las conexiones inactivas demasiado pronto. Puede cerrar su conexión de control antes de que finalice la transferencia.
fuente
Si
todavía regresa
cli_push returned NT_STATUS_IO_TIMEOUT
simplemente agregue una opción de tiempo de espera
-t <timeout in seconds>
Me ayuda a copiar archivos enormes (> 200 Tb) de máquinas virtuales
fuente