Schrift
[thread]11773[/thread]

scp und kopieren von remote-files

Leser: 2


<< >> 9 Einträge, 1 Seite
tecker
 2008-05-07 16:07
#109368 #109368
User since
2008-02-26
77 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi,

ich bastle grad an einem Script welches von einem entfernten Server Logfiles holen soll um dann den Inhalt in die lokale DB zu speichern. Die DB Sache klappt soweit erstmal ...

Die Frage ist wie man am "günstigsten" die Files kopiert. Es soll täglich ein kopier-Vorgang über cron gestartet werden, aber es muss eine Prüfung statt finden ob das File schonmal kopiert wurde oder nicht. Im entfernten Ordner werden eine Großzahl dieser Logs liegen die tagtäglich im 4Min Takt erzeugt werden und wichtig ist, dass ich bei meinem täglichen Kopiervorgang keine doppelt hole.

Da die Logs alle eine eindeute ID im Namen haben wäre es ja kein Problem diese in einer Table der DB zu speichern und vorm "anfassen" der Datei immer zu prüfen ob die ID bereits vorhanden bzw bekannt ist. Ich müsste dann aber dennoch jeden Tag erst ALLE Files auf meinen lokalen Server kopieren und prüfen.

Kann ich das irgendwie schachteln, d.h. beim scp Vorgang direkt in der lokalen DB die ID prüfen?

Grüße
gkaiser
 2008-05-07 16:23
#109378 #109378
User since
2007-06-21
4 Artikel
BenutzerIn
[default_avatar]
Hi,

bewegst du dich auf einer Windows oder einer Unix Welt?

Gruß Gaston
tecker
 2008-05-07 16:25
#109380 #109380
User since
2008-02-26
77 Artikel
BenutzerIn
[Homepage] [default_avatar]
Solaris 10 (Debian wäre mir lieber, aber danach gings nicht :) )
gkaiser
 2008-05-07 16:33
#109384 #109384
User since
2007-06-21
4 Artikel
BenutzerIn
[default_avatar]
Hi,

man kann mit scp auch remote Kommandos ausführen lassen. Ich würde darüber zuerst ein dir command absetzen, der das Ergebnis in eine Datei schreibt. Diese Ergebnisdatei kannst du dir auf deinen lokalen Rechner holen, gegenüber deinen DB Einträgen auswerten und die fehlenden Dateien per Scp holen

Gruß Gaston
nepos
 2008-05-07 16:35
#109386 #109386
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hm, warum nicht mit rsync über ssh einfach rüberkopieren?
tecker
 2008-05-07 17:01
#109394 #109394
User since
2008-02-26
77 Artikel
BenutzerIn
[Homepage] [default_avatar]
Vermutlich würde das den Rahmen meines verfügbaren Plattenplatzes sprengen auf dem die Auswertung statt findet. Es werden am Tag 360 Files von jetzt noch unvorhersehbarer Größe erstellt (mehrere MB). Des weiteren soll auf dem Server von welchem die Daten geholt werden eigentlich nichts extra konfiguriert/installiert werden. Wobei rsync eigentlich eine komfortable Sache wäre.
Aber für den Fall, dass kein Weg dran vorbei geht sich jedes File zu holen, ... ?
Sollte man evtl. auf dem Remote-Server eine Datei mit eienr Liste der IDs führen und die pro scp-Vorgang abgleichen?
pq
 2008-05-07 17:40
#109400 #109400
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
rsync ist genau dafür gedacht, von daher würd ich das auch empfehlen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
tecker
 2008-05-09 17:39
#109491 #109491
User since
2008-02-26
77 Artikel
BenutzerIn
[Homepage] [default_avatar]
Habe es jetzt wie folgt gelöst:

Code: (dl )
1
2
3
4
5
6
7
8
9
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime (time-(3600*24));
$year+=1900;
$mon+=1;

$year = sprintf "%02d", $year;
$mon = sprintf "%02d", $mon;
$mday = sprintf "%02d", $mday;
my $file = "extasc_cdr_$year$mon$mday*";
system('scp', "10.255.253.95:/pfad/$file", "./pfad");


und hole mir damit immer alle Dateien vom Vortag in ein TMP Verzeichnis, lese sie in eine DB und lösche sie wieder. Ich nutze dabei den Datums-String der vollständig im Dateinamen enthalten ist. In jedem Datensatz (Zeile der CSV-Datei) ist noch ein
eindeutiger HEX Wert enthalten, den kann ich dann zusätzlich noch in einer als UNIQUE deklarierten MySQL Spalte halten, so dass auch da nichts doppelt vorkommen sollte. Würde mich, was den Datumsstring angeht, zwar lieber am 'stat' der Datei statt dem Dateinamen orientieren, aber da weis ich noch nicht wie. Wenn die mal den Dateinamen ändern müsste ich so das Skript nicht anpassen.

VG
nepos
 2008-05-09 18:15
#109492 #109492
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hm, das mit dem Zusammenbauen des Datumsstrings könntest du mittels CPAN:POSIX und dem darin enthaltenen strftime() noch etwas einfacher machen denke ich.
<< >> 9 Einträge, 1 Seite



View all threads created 2008-05-07 16:07.