copiar archivos de Windows a Linux

16

Estoy escribiendo un guion. Ejecutará una máquina Linux. Sus objetivos incluyen Linux, Solaris y Windows.

Sé que puedo usar scp para copiar archivos entre * nix. pero ¿qué hay de copiar el archivo de Windows?

Estas ventanas son máquinas de prueba, de las cuales no se puede esperar que tengan un software específico instalado, ya que el sistema operativo se puede reinstalar con frecuencia.

Alex
fuente

Respuestas:

21

Usa Samba .

Samba proporciona un servicio para compartir archivos compatible con Windows.

Puede compartir un directorio (por ejemplo /srv/samba/sharename) en el equipo Linux y acceder a ella desde Windows como esto: \\linuxservername\sharename. No necesita ningún software adicional en el lado de Windows.

Samba está incluido en la mayoría de las distribuciones de Linux. Instálelo usando el administrador de paquetes, por ejemplo:

  • Ubuntu: sudo apt-get install samba smbclient

  • SUSE: zypper samba

  • CentOS / RedHat: yum install samba

Para configurar Samba, vea:

o busque en Google para encontrar una guía para su distribución.

Tenga en cuenta que puede necesitar configurar su firewall de Linux, en caso de que use uno, para aceptar conexiones a los puertos 137 / tcp, 138 / tcp, 139 / tcp y 445 / tcp (vea esto y esto ).


En la descripción anterior, la computadora Linux es un servidor Samba y Windows monta un recurso compartido.

En su comentario a continuación , menciona que desea automatizar el proceso de transferencia . Esto se puede lograr invirtiendo los roles para que Windows actúe como el servidor y Linux se conecte a él usando smbclient.

Con smbclientusted no necesita montar el recurso compartido de Windows en absoluto. Por ejemplo, para recuperarlo C:\Directory\file.txty copiarlo /tmpen su computadora Linux haga esto:

smbclient '//windowsserver/c$' -c 'lcd /tmp; cd Directory; get file.txt' -U administrator%password

-cComando a ejecutar. Ver man smbclientpara más detalles.

-U Nombre de usuario y contraseña para acceder al recurso compartido especificado como username%password

Modifíquelo según sus necesidades y agréguelo a su script.

jaume
fuente
@max, gracias por tus excelentes respuestas. Sé que samba puede funcionar con Windows. Pero aún necesita la participación del ser humano al copiar un archivo. Como mi script se ejecutará en un linux y la máquina ha instalado samba, ¿cómo puedo dejar que el script haga el trabajo de copia? Parece que es mejor que monte el disco de Windows en Linux, entonces puedo acceder a él en Linux. ¿Samba puede hacer esto?
Alex
Sí, Samba puede hacer esto. Aún mejor, no necesita montar el recurso compartido de Windows en absoluto. Puede usar smbclientpara conectarse al recurso compartido de Windows, copiar un archivo y desconectarse. Edité mi respuesta, échale un vistazo.
jaume
De nada, me alegro de poder ayudar.
jaume
1
Especialmente -cvale la pena usar la opción en casos simples. En mi máquina, la contraseña viene como un argumento simple (sin ninguna opción). Y además, prefiero mantener las credenciales lejos de los lectores de línea de comandos (usando pso [h]top, por ejemplo), llamando -U $(cat .username) $(cat .password).
Tomasz Gandor
3

Sé que dijo que no puede esperar que se instale un software específico, pero hay clientes SSH / SCP / SFTP para Windows que no requieren ninguna instalación en particular; solo el ejecutable está disponible. Uno al que sigo recurriendo es PuTTY con su compañero pscpy psftpherramientas, pero estoy seguro de que existen alternativas. pscpy psftppuede manejarse completamente desde la línea de comando, y por lo tanto, son adecuados para tareas de automatización. Ambos tienen incluso un -batchinterruptor que se describe como "deshabilitar todas las indicaciones interactivas" y casi con seguridad se puede aprovechar.

Dado que presumiblemente ya tiene un servidor SSH / SCP / SFTP instalado y configurado en el servidor, esto evita tener que instalar ningún software en cualquiera de los hosts con el único fin de copiar esos archivos.

Otra ventaja podría ser el hecho de que PuTTY es de código abierto bajo una licencia permisiva, por lo que si no hace lo que quiere directamente, debería ser relativamente fácil hacer que actúe de la manera que prefiera.

un CVn
fuente
1
Gracias por su recomendación. Intentaré pscp y psftp. También son excelentes herramientas.
Alex
1

Soy CentOS 6usuario, así que probé este método enCentOS 6

Instalar samba usando

[root @ server ~] # yum install samba

Consulta para confirmar

[root @ server ~] # rpm -qa samba
samba-3.5.10-125.el6.i686

Crea un usuario de Samba.

[root @ server ~] # useradd sambashare

Ahora cree la contraseña de samba para el nombre de usuario sambashare usando el comando smbpasswd.

[root @ server ~] # smbpasswd -a sambashare
Nueva contraseña de SMB:
Vuelva a escribir la nueva contraseña de SMB:
Usuario añadido sambashare.

Crear un directorio compartido de samba

[root @ server ~] # mkdir / share

cambiar la propiedad de la carpeta compartida

[root @ server ~] # chown -R sambashare: sambashare / share /

Abra el archivo /etc/samba/smb.confy agregue las siguientes líneas.

[compartir]
comentario = Compartir
ruta = / compartir
grabable = sí
usuarios válidos = sambashare

Iniciar servicio de samba

[root @ server ~] # service smb restart
Cierre de servicios SMB: [OK]
Inicio de servicios SMB: [OK]

Verifique su configuración utilizando el testparmcomando

.
.
[compartir]
comentario = compartir
ruta = / compartir
usuarios válidos = sambashare
solo lectura = No

En el sistema de Windows escriba esto en run

ingrese la descripción de la imagen aquí

Ahora ingrese el nombre de usuario y contraseña de samba

ingrese la descripción de la imagen aquí

Estás listo

ingrese la descripción de la imagen aquí

max
fuente
Muchas gracias max. para tu tutorial muy vívido para un novato.
Alex
@Alex de nada ... :-)
max