Schrift
[thread]6085[/thread]

mtime auf server?

Leser: 1


<< |< 1 2 >| >> 15 Einträge, 2 Seiten
mobas
 2004-02-20 10:30
#80233 #80233
User since
2004-02-11
19 Artikel
BenutzerIn
[default_avatar]
hallo :)

nachdem ich schon so viel hilfe zu meinen anderen problemen bekommen habe hoffe ich nun auch mit meinem neuen problem
viele lösungsvorschläge zu erhalten! ;)

so dann.

ich habe über ftp ne verbindung zum server aufgebaut.
dort hab ich dann n 'ls' ausgeführt und die ausgabe in ein array geschrieben.
nun wird das array nach und nach durchlaufen und die dateien über get auf meinen lokalen rechner gespeichert.
so weit so gut. funzt auch alles.
nun will ich aber das nur dateien runterkopiert werden die neuer sind als die zu letzt gespeichert datei.
das letzte dateidatum hab ich mit 'mtime' ausgelesen und das gibt er mir auch aus.
perl sacht jetzt aber, als ich das element x im array ausgewählt habe, das er keine Datei finden kann. ???
Code: (dl )
1
2
3
4
5
foreach $file (@filelist)
{
$temp = stat($file) or die("Keine Datei gefunden $!"); //<-- hier Fehlermessage
$temptime = $temp->mtime;
}


kann man 'mtime' nur lokal ausführen?
wenn ja, wie bekomme ich die 'mtime' dann raus?

vielen dank schon mal für die hilfe!!!

mfg mobas
ptk
 2004-02-20 11:10
#80234 #80234
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
stat() geht nur lokal. Wenn du dir die Arbeit einfach machen willst, kannst du dir mirror() in LWP::Simple angucken.
mobas
 2004-02-20 12:36
#80235 #80235
User since
2004-02-11
19 Artikel
BenutzerIn
[default_avatar]
hi ptk,

hab das dazu gefunden:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
use LWP::Simple;

%mirrors = (
'http://www.sn.no/' => 'sn.html',
'http://www.perl.com/' => 'perl.html',
'http://www.sn.no/libwww-perl/' => 'lwp.html',
'gopher://gopher.sn.no/' => 'gopher.html',
);

while (($url, $localfile) = each(%mirrors)) {
mirror($url, $localfile);
}


wie bekomm ich denn da die modificationtime raus?
kannst mir da n tip geben!?

hab da momentan keine peilung :D

mfg mobas
ptk
 2004-02-20 13:52
#80236 #80236
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Brauchst du die mtime dann noch? mirror laedt die Dateien nur runter, wenn sie geaendert worden sind. Ansonsten kannst du dich durch den Code von LWP::Protocol::ftp durchwuehlen... Moment, ich habe es gerade gemacht. Es sieht so aus, als ob die mdtm-Methode von Net::FTP das zurueckgibt, was du brauchst.
mobas
 2004-02-25 09:50
#80237 #80237
User since
2004-02-11
19 Artikel
BenutzerIn
[default_avatar]
moin,

danke für deinen tip!
mdtm liefert eigentlich das was ich brauche.
nur bei mir spuckt er aus das er dei datei nicht finden konnte :(
habe dann mal direkt aufm ftp folgendes ausprobiert.
Code: (dl )
 ftp> quote mdtm filename


und da sacht er mir folgendes:
Quote
'MDTM filename': command not understood.


was läuft da denn schief?

die dateien auf dem server werden permanent erzeugt und nicht geändert.
das skript soll nur die neusten dateien runterladen und die die ich schon habe sollen auf dem server bleiben. deshalb der timestamp.
hst da noch n tip zu hand?! :D

vielen dank schhon mal vorab!

mfg mobas
Heromaster
 2004-02-25 11:35
#80238 #80238
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Das weist darauf hin, das dieser Befehl vom FTP-Server nicht verstanden wird. Mit HELP kannst Du Dir alle vom FTP-Server unterstützten Befehle anzeigen lassen.
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
mobas
 2004-02-25 13:02
#80239 #80239
User since
2004-02-11
19 Artikel
BenutzerIn
[default_avatar]
hi heromaster,

hab das problem gefunden.
mein server unterstützt das nich :(
obwohl er es in der help ausgabe anzeigt. ???
und einschalten dieser ist auch unmöglich da auf dem server nichts geändert werden darf.
wenn man jetzt aber die ausgabe von nem dir befehl ausliest
kann man ja das datum und die zeit rauslesen.
hast du n ansatzpunkt wie man das hinbekommt?!
der dir befehl gibt ja das aus:
Code: (dl )
1
2
3
ftp> dir
total 1
-rw-r--r-- 3 owner group size Feb 25 11:37 filename

wie bekomm ich daraus am optimalsten ein timestamp raus?
oder wenigstens diese form: 02251137
aber hauptsache irgendwie das erstelldatum.

bin für jede hilfe dankbar!!!

mfg mobas
ptk
 2004-02-25 15:20
#80240 #80240
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
In POE::Filter::Ls findet man eine Regexp zum Aufbroeseln einer ls/dir-Zeile. Leider ist diese Regexp nicht ausreichend, da normalerweise ls je nach Alter der Datei die Uhrzeit oder das Jahr anzeigt, also entweder "Jul 31 2003" oder "Feb 18 13:16". Vielleicht kann man Date::Parse oder Date::Manip zum Parsen des Datums verwenden.
mobas
 2004-02-25 15:29
#80241 #80241
User since
2004-02-11
19 Artikel
BenutzerIn
[default_avatar]
hi,

ich glaub ich hab schon ne lösung gefunden.
ich fummel mit substr und rindex die ausgabe auseinander
und wandel den monat in zahlen um (Feb = 02 usw.).
dann setzt ich alle einzelstrings zusammen und dann hab ich folgende ausgabe:
02101137 (MMTThhmm)
das dürfte meinen anforderungen genügen ;)

danke für eure hilfereichen tips!!!

mfg mobas
Crian
 2004-03-01 11:40
#80242 #80242
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Zum Auseinandernehmen könnte split sicherer sein!?
Nach Whitespace splitten und die Felder -2, -3 und -4 verwenden...\n\n

<!--EDIT|Crian|1078134210-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2004-02-20 10:30.