# SCP kopievorgang per Batch



## Robium (27. Januar 2013)

Guten Morgen ihr Leuts 
ich habe mal wieder eine frage 

ich muss eine Datei die 11GB gross ist von einem Rechner (öffentliche ip) auf einem anderen Rechner (private ip) übertragen. Da die datei 11GB hat fällt FTP schonmal weg wegen der 2GB grenze. Nun möchte ich das per SCP realisieren jedoch soll dies jeden tag automatisch passieren deshalb habe ich es per Batch geplant weiß jedoch überhaupt  nicht wie der code aussehen soll... habt ihr eine Lösung oder denkanschwünge?

schönen sonnntag wünscht euch
euer Robium


----------



## ikosaeder (27. Januar 2013)

Welches OS haben denn die beiden Rechner? Soll das ganze vom Rechner mit der öffentlichen IP ausgehen oder anders herum? Im ersten Fall ist es so direkt eigentlich nicht möglich. Du müsstest dann mit VPN oder SSH-Tunneln arbeiten. Im zweiten Fall kannst du unter Linux einen cron job einrichten, der die Datei kopiert.

```
crontab -l > tempcron
echo "0 24 * * * Username scp QuellDatei Zieldatei  >> tempcron
crontab tempcron
```
Unter Windows gibt es SCHTASKS als Alternative zu cron.

Ist es denn wirklich sinnvoll, eine 11 GB große Datei jeden Tag zu kopieren? Kannst du es evt in mehrere kleinere Dateien aufspalten? Dann könntest du z.B. rsync benutzen, dabei werden nur die Sachen kopiert, die sich geändert haben.


----------



## Robium (27. Januar 2013)

sorry habe ich vergessen zu erwähnen.  Dabei handelt es  sich um ein Windows Server 2003 (private ip) und ein windows 7 (öffentliche ip). Es soll vom Win7 auf den Win Server 2003 gesendet werden. Darf leider nicht gesplittet werden da es ein vollbackup ist. Der win7 hat keinen streamer deshalb soll es auf den win server 2003 gesendet werden dort wird es dann auf band gespeichert


----------



## ikosaeder (27. Januar 2013)

Gibt es da ne Firewall? Hängen die im gleichen Netz?
Ansonsten hast du mit privater IP schlechte Karten.
Evt. könntest du trotzdem die Verbindung vom 2003 Server aus öffnen und die Datei ziehen.
Warum täglich ein Vollbackup? Wäre ein inkrementelles Backup nicht besser? Und wie erstellst du das Backup?


----------



## Robium (27. Januar 2013)

Ne sind nicht im selben Netz.. ich hab eine SSH verbindung dahin deshalb will ich das mit SCP machen 
Und warum immer ein VOllbackup leider hab ich da keinen einfluss drauf =) die Personen die dafür zuständig waren wollen es so haben 
Der Rechner mit der öffentlichen IP ist in der DMZ der Firma und der andere hat halt die Private IP beide jedoch in der firma 

deshalb versuche ich es halt es über eine Batch zu regeln... ich weiß nur nicht wie ich mich per Batch für SCP anmelde etc....


----------



## ikosaeder (28. Januar 2013)

Wie gesagt, der einfachste weg wäre, du initierst die Verbindung vom Rechner mit der privaten IP, dann bleiben dir die Probleme mit Router, Firewall etc. erspart.
Ssh ist das Mittel der Wahl.
Installier cygwin auf dem Rechner und in cygwin den cron 
http://stackoverflow.com/questions/707184/how-do-you-run-a-crontab-in-cygwin-on-windows
Dann kannst du ein Shellskript schreiben, das die Datei herunterlädt.
Auf dem Rechner, mit der öffentlichen IP muss das Backup dann halt nur unter einem festen Namen und festen Pfad gespeichert werden.
Du musst nur sicherstellen, das das Backup auf vorliegt bevor du versuchst es herunter zu laden.
Statt scp könntest du auch bei einer Datei rsync verwenden.


----------



## Robium (28. Januar 2013)

So habe ich es versucht  Ich habe auf dem Rechner mit öffentlicher IP Cygwin mit SSH installiert und auf dem anderen WinSCP. Mein Script sieht so aus...

cd C:\Program Files (x86)\WinSCP
winscp.exe /console /command "option batch abort" "open user@192.168.2.10" "get C:\test.txt C:\ " "exit"

Der baut zwar die Verbindung auf, meldet aber permanent das er die Datei nicht finden kann... da häng ich fest momentan..das scripten ist nicht so meine stärke :/


----------



## ikosaeder (28. Januar 2013)

Hast du unter Cygwin denn den sshd gestartet?
http://cygwin.wikia.com/wiki/Sshd
Wofür winscp? Benutze doch einfach auf beiden Rechnern Cygwin, oder eine andere SSH Implementierung für Windows.
Dann wäre das commando (in cygwin

```
scp user@Host:/PfadzuBackup/Backup LokalerZielordner
```
was ich persönlich einfacher finde.
Alternativ:

```
rsync --archive user@host::PfadzurDatei LokalerZielordner
```
setzt einen rsync Daemon vorraus. 
Vorteil bei rsync: rsync unterstützt auch inkrementelle Backups.
Das heißt, es muss nicht immer die ganze Datei übertragen werden und für das Vollbackup kannst du einfach eine lokale Kopie erstellen.
https://de.wikipedia.org/wiki/Rsync
Wir benutzen rsync z.B. um Ordner mit der Firmenzentrale zu synchronisieren. Das funktioniert sehr gut, allerdings läuft bei uns alles auf Linux, und alle Rechner sind per VPN im selben Netz, damit ist es natürlich einfacher. Aber selbst unter Windows lässt sich rsync mit cygwin gut


----------



## Robium (28. Januar 2013)

Ja der sshd ist gestartet, die verbindung baut der ja auf...jetzt brauch ich aber eine neue idee...cygwin soll nicht installiert werden, wenn es geht soll cygwin nicht verwendet werden aber die idee mit dem scp ist gut...jetzt muss ich mir dazu was enifallen lassen  das ohne cygwin hinzubekommen


----------



## ikosaeder (28. Januar 2013)

Du kannst auch putty nehmen.


----------



## Robium (29. Januar 2013)

wie meinst du das mit dem putty? 
 Ich brauch ja auf dem Rechner auf welchem ich mich verbinden will (in meinem fall der mit der öffentlichen IP) den sshd..diesen hab ich mit CygWin installiert, aber das soll ohne CygWin geschehen sorry wenn ich es im vorherigen Post schlecht erklärt habe


----------



## ikosaeder (29. Januar 2013)

Ah verstanden: du meinst so was hier:
http://sshwindows.sourceforge.net/
Bzw. kommerziell
http://www.bitvise.com/ssh-server?gclid=CJO49MWajbUCFYJBzQod8FMAbQ

Suchmaschine: sshd Windows liefert noch mehrere andere Möglichkeiten einen SSH-Server unter Windows auf zusetzen.
Mit putty war ein alternativer ssh-client für den Rechner mit der lokalen IP gemeint.
http://www.putty.org/
Die volle Cygwin-Installation gibt dir halt ein paar mehr Möglichkeiten, inklusive X-Server.


----------



## Robium (29. Januar 2013)

Die Links sind sehr cool die schau ich mir definitiv zuhause an und spiel mal ne runde einfach für mich. 
Mir wurde heute gesagt aus Sicherheitsgründen soll kein SSH auf dem Rechner mit öffentlicher IP installiert werden also habe ich überlegt und mache es jetzt mit wget für Windows. 

Danke für die kompetente und zügige Hilfe =)


----------



## ikosaeder (29. Januar 2013)

Entschuldige das ich lache, aber wget benutzt ftp, http und https. Sofern du nicht mindestens https benutzt ist deine Verbindung unverschlüsselt. 
Unterstützt dein Server https?

ssh, scp, sftp und rsync über ssh sind dagegen immer verschlüsselt und mit entsprechender Konfiguration (z.B. Limitierung der User, IP Bereich, KeyAuthentification) ziemlich sicher. Klar ist ein sshd auf einem angreifbaren Rechner ein zusätzliches Risiko, aber der Zugang kann sehr restriktiv eingestellt werden, da er nur für einen sehr kleinen Nutzerkreis (nämlich dich) verfügbar sein muss. ssh ist normalerweise sicherer als die meisten Webserver, insbesondere solche mit komplexen Webanwendung auf PHP/MySql Basis.

Mich würde interessieren wer entschieden hat,  das kein ssh benutzt werden darf? Jemand mit Ahnung (Administrator) oder jemand mit ohne Ahnung. 

Wenn du trotzdem wget benutzen willst: Verwende https und sichere die Datei mit htaccess.
Alternativer Vorschlag: Webdav
http://webdav.org/
Wenn auf dem Rechner eh schon ein Apache o.ä. läuft eine recht sichere Variante. Da kann ich aber nicht soviel zur Benutzung sagen, weiß nur das es das gibt.


----------

