Kopieren Sie die Datei von Windows nach Linux


16

Ich schreibe ein Drehbuch. Es wird eine Linux-Maschine laufen. Zu den Zielen zählen Linux, Solaris und Windows.

Ich weiß, dass ich scp verwenden kann, um Dateien zwischen * nix zu kopieren. aber wie wäre es mit dem Kopieren von Dateien aus Windows?

Bei diesen Fenstern handelt es sich um Testcomputer, auf denen möglicherweise keine bestimmte Software installiert ist, da das Betriebssystem häufig neu installiert werden kann.

Antworten:


21

Benutze Samba .

Samba bietet einen Dateifreigabedienst, der mit Windows kompatibel ist.

Sie können ein Verzeichnis (zum Beispiel teilen /srv/samba/sharename) auf Ihrem Linux - Computer und Zugriff aus dem Windows wie folgt aus : \\linuxservername\sharename. Auf der Windows-Seite wird keine zusätzliche Software benötigt.

Samba ist in den meisten Linux-Distributionen enthalten. Installieren Sie es mit dem Paket-Manager, zum Beispiel:

  • Ubuntu: sudo apt-get install samba smbclient

  • SUSE: zypper samba

  • CentOS / RedHat: yum install samba

Informationen zum Konfigurieren von Samba finden Sie unter:

oder suchen Sie bei Google nach einem Leitfaden für Ihre Distribution.

Beachten Sie, dass Sie möglicherweise Ihre Linux-Firewall konfigurieren müssen, falls Sie eine verwenden, um Verbindungen zu den Ports 137 / tcp, 138 / tcp, 139 / tcp und 445 / tcp zu akzeptieren (siehe dies und das ).


In der obigen Beschreibung ist der Linux-Computer ein Samba-Server und Windows stellt eine Freigabe von ihm bereit.

In Ihrem Kommentar unten erwähnen Sie, dass Sie den Übertragungsprozess automatisieren möchten . Dies kann erreicht werden, indem die Rollen vertauscht werden, sodass Windows als Server fungiert und Linux eine Verbindung dazu herstellt smbclient.

Mit müssen smbclientSie die Windows-Freigabe überhaupt nicht mounten. C:\Directory\file.txtGehen Sie zum Beispiel folgendermaßen vor, um es abzurufen und /tmpauf Ihren Linux-Computer zu kopieren :

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

-cBefehl zum Ausführen. Siehe man smbclientfür weitere Einzelheiten.

-U Benutzername und Passwort für den Zugriff auf die Freigabe angegeben als username%password

Passen Sie es Ihren Bedürfnissen an und fügen Sie es Ihrem Skript hinzu.


@max, danke für deine tollen Antworten. Ich weiß, dass Samba mit Windows arbeiten kann. Beim Kopieren einer Datei sind jedoch noch menschliche Eingriffe erforderlich. Da mein Skript unter einem Linux ausgeführt wird und der Computer Samba installiert hat, wie kann ich das Kopieren von einem Skript ausführen lassen? Es scheint, dass ich die Windows-Festplatte besser unter Linux einbinden sollte, dann kann ich unter Linux darauf zugreifen. Kann Samba das tun?
Alex

Ja, Samba kann das. Noch besser ist, dass Sie die Windows-Freigabe überhaupt nicht bereitstellen müssen. Mit können Sie smbclienteine Verbindung zur Windows-Freigabe herstellen, eine Datei kopieren und die Verbindung trennen. Ich habe meine Antwort bearbeitet, schau sie dir an.
Jaume

Gern geschehen, ich bin froh, dass ich helfen konnte.
Jaume

1
Besonders die -cOption lohnt sich in einfachen Fällen. Auf meinem Computer kommt das Passwort als bloßes Argument (ohne Option). Außerdem ziehe ich es vor, die Anmeldeinformationen von Befehlszeilenlesern fernzuhalten ( z. B. mit psoder [h]top), indem ich anrufe -U $(cat .username) $(cat .password).
Tomasz Gandor

3

Ich weiß, Sie sagten, Sie können nicht erwarten, dass bestimmte Software installiert wird, aber es gibt SSH / SCP / SFTP-Clients für Windows, für die keine bestimmte Installation erforderlich ist. Nur die ausführbare Datei ist verfügbar. Einer, an den ich mich immer wieder wende, ist PuTTY mit seinem Begleiter pscpund seinen psftpWerkzeugen, aber ich bin mir sicher, dass es Alternativen gibt. pscpund psftpkönnen komplett von der Kommandozeile aus angesteuert werden und eignen sich somit gut für Automatisierungsaufgaben. Beide haben sogar einen -batchSchalter, der als "Alle interaktiven Eingabeaufforderungen deaktivieren" bezeichnet wird und mit ziemlicher Sicherheit genutzt werden kann.

Da Sie vermutlich bereits einen SSH / SCP / SFTP-Server auf dem Server installiert und konfiguriert haben, müssen Sie keine Software auf einem der beiden Hosts installieren, nur um diese Dateien zu kopieren.

Ein weiterer Vorteil könnte die Tatsache sein, dass PuTTY Open Source unter einer genehmigten Lizenz ist. Wenn PuTTY also nicht sofort das tut, was Sie wollen, sollte es relativ einfach sein, es so zu machen, wie Sie es bevorzugen.


1
Vielen Dank für Ihre Empfehlung. Ich werde pscp und psftp ausprobieren. Sie sind auch großartige Werkzeuge.
Alex

1

Ich bin ein CentOS 6Benutzer und habe diese Methode anprobiertCentOS 6

Installieren Sie Samba mit

[root @ server ~] # yum installiere Samba

Abfrage zur Bestätigung

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

Erstellen Sie einen Samba-Benutzer.

[root @ server ~] # useradd sambashare

Erstellen Sie nun mit dem Befehl smbpasswd ein Samba-Passwort für den Benutzernamen sambashare.

[root @ server ~] # smbpasswd -a sambashare
Neues SMB Passwort:
Geben Sie das neue SMB-Passwort erneut ein:
Benutzer sambashare hinzugefügt.

Erstellen Sie ein Samba-Freigabe-Verzeichnis

[root @ server ~] # mkdir / share

Ändern Sie den Eigentümer für den Freigabeordner

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

Öffnen Sie die Datei /etc/samba/smb.confund fügen Sie die folgenden Zeilen hinzu.

[Teilen]
comment = Teilen
Pfad = / Aktie
beschreibbar = ja
gültige Benutzer = Sambashare

Starten Sie den Samba-Dienst

[root @ server ~] # service smb restart
Herunterfahren von SMB-Diensten: [OK]
Starten von SMB-Diensten: [OK]

Überprüfen Sie Ihre Konfiguration mit dem testparmBefehl

.
.
[Teilen]
Kommentar = teilen
Pfad = / Aktie
gültige Benutzer = Sambashare
schreibgeschützt = Nein

In Windows-System geben Sie dies ein run

Bildbeschreibung hier eingeben

Geben Sie nun den Samba-Benutzernamen und das Passwort ein

Bildbeschreibung hier eingeben

Du bist fertig

Bildbeschreibung hier eingeben


Vielen Dank, max. für Ihr sehr anschauliches Tutorial für einen Neuling.
Alex

@ Alex du bist willkommen ... :-)
max
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.