copia il file da Windows a Linux


16

Sto scrivendo una sceneggiatura. eseguirà una macchina linux. i suoi obiettivi includono Linux, Solaris e Windows.

So che posso usare scp per copiare file tra * nix. ma che ne dici di copiare file da Windows?

Queste finestre sono macchine di prova, che non possono prevedere l'installazione di un software specifico, poiché è possibile reinstallare spesso il sistema operativo.

Risposte:


21

Usa Samba .

Samba offre un servizio di condivisione file compatibile con Windows.

È possibile condividere una cartella (ad esempio /srv/samba/sharename) sul computer Linux e accedervi da Windows in questo modo: \\linuxservername\sharename. Non necessita di alcun software aggiuntivo sul lato Windows.

Samba è incluso nella maggior parte delle distribuzioni Linux. Installalo usando il gestore pacchetti, ad esempio:

  • Ubuntu: sudo apt-get install samba smbclient

  • SUSE: zypper samba

  • CentOS / RedHat: yum install samba

Per configurare Samba, vedere:

oppure cerca su Google per trovare una guida per la tua distribuzione.

Nota che potresti dover configurare il tuo firewall Linux, nel caso in cui ne utilizzassi uno, per accettare connessioni alle porte 137 / tcp, 138 / tcp, 139 / tcp e 445 / tcp (vedi questo e questo ).


Nella descrizione sopra il computer Linux è un server Samba e Windows monta una condivisione da esso.

Nel tuo commento di seguito menzioni che desideri automatizzare il processo di trasferimento . Ciò può essere ottenuto invertendo i ruoli in modo che Windows funga da server e Linux si colleghi ad esso utilizzando smbclient.

Con smbclientte non è necessario montare la condivisione di Windows. Ad esempio, per recuperarlo C:\Directory\file.txte copiarlo /tmpsul tuo computer Linux, procedere come segue:

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

-cComando da eseguire. Vedi man smbclientper i dettagli.

-U Nome utente e password per accedere alla condivisione specificata come username%password

Modificalo in base alle tue esigenze e aggiungilo al tuo script.


@max, grazie per le tue ottime risposte. So che samba può funzionare con Windows. Ma ha ancora bisogno di coinvolgimento dell'essere umano quando si copia un file. Dato che il mio script verrà eseguito su un Linux e la macchina ha installato samba, come posso lasciare che lo script esegua la copia? Sembra che dovrei montare il disco di Windows su Linux, quindi posso accedervi da Linux. Samba può farlo?
Alex

Sì, Samba può farlo. Ancora meglio, non è necessario montare la condivisione di Windows. È possibile utilizzare smbclientper connettersi alla condivisione di Windows, copiare un file e disconnettersi. Ho modificato la mia risposta, date un'occhiata.
Jaume

Prego, sono felice di poterti aiutare.
Jaume

1
Soprattutto l' -copzione vale la pena usare in casi semplici. Sul mio computer la password viene fornita come argomento semplice (senza alcuna opzione). Inoltre, preferisco tenere le credenziali lontane dai lettori della riga di comando (utilizzando pso [h]top, ad esempio), chiamando -U $(cat .username) $(cat .password).
Tomasz Gandor,

3

So che hai detto che non puoi aspettarti di installare software specifici, ma ci sono client SSH / SCP / SFTP per Windows che non richiedono alcuna installazione particolare; essendo disponibile solo l'eseguibile. Uno a cui continuo a rivolgermi è PuTTY con il suo compagno pscpe gli psftpstrumenti, ma sono certo che esistono alternative. pscpe psftppuò essere guidato completamente dalla riga di comando, e quindi sono adatti per compiti di automazione. Entrambi hanno anche un -batchinterruttore che è descritto come "disabilita tutti i prompt interattivi" e quasi certamente può essere sfruttato.

Dato che presumibilmente hai già un server SSH / SCP / SFTP installato e configurato sul server, questo evita di dover installare qualsiasi software su entrambi gli host solo allo scopo di copiare quei file.

Un altro vantaggio potrebbe essere il fatto che PuTTY è open source con una licenza permissiva, quindi se non fa quello che vuoi subito, dovrebbe essere relativamente facile farlo agire nel modo che preferisci.


1
Grazie per la tua raccomandazione Proverò pscp e psftp. Sono anche ottimi strumenti.
Alex

1

Sono un CentOS 6utente, quindi ho provato questo metodoCentOS 6

Installa samba usando

[root @ server ~] # yum installa samba

Richiesta per confermare

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

Crea un utente Samba.

[root @ server ~] # useradd sambashare

Ora crea la password samba per il nome utente sambashare usando il comando smbpasswd.

[root @ server ~] # smbpasswd -a sambashare
Nuova password SMB:
Digitare nuovamente la nuova password SMB:
Aggiunto utente sambashare.

Crea una directory di condivisione samba

[root @ server ~] # mkdir / share

cambia la proprietà per la cartella condivisa

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

Apri il file /etc/samba/smb.confe aggiungi le righe seguenti.

[Condividere]
commento = Condividi
percorso = / condividi
scrivibile = si
utenti validi = sambashare

Avvia il servizio samba

[root @ server ~] # service smb restart
Chiusura dei servizi SMB: [OK]
Avvio dei servizi SMB: [OK]

Controlla la tua configurazione usando il testparmcomando

.
.
[Condividere]
commento = condividi
percorso = / condividi
utenti validi = sambashare
sola lettura = No

Nel sistema di Windows digitare questo in run

inserisci qui la descrizione dell'immagine

Ora inserisci nome utente e password samba

inserisci qui la descrizione dell'immagine

Hai fatto

inserisci qui la descrizione dell'immagine


Grazie mille, max. per il tuo tutorial molto vivido per un principiante.
Alex

@Alex sei il benvenuto ... :-)
max
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.