2009-03-17 14 views
-1

Ich brauche ein Shell- oder Perl-Skript, das eine Verbindung zum FTP-Server herstellen und alle Dateien löschen würde, die älter als 7 Tage sind.Wie kann ich mich bei einer FTP-Site anmelden und Dateien entfernen, die älter als 7 Tage sind?

prost

+0

Was ist das Rent-a-Coder? –

+0

find/

-type f -mtime +7 -exec rm {} \; – Neel

+1

Wenn es Ihnen nichts ausmacht, Python zu verwenden, markieren Sie [this] (http://stackoverflow.com/questions/2867217/how-to-delete-files-with-a-python-script-from-a-ftp-server (which-are-old-than-7/3114477 # 3114477) antworten Sie in einer verwandten Frage. – tzot

Antwort

2

In Perl, dann würden Sie Net::FTP ‚s ls, mdtm und löschen Befehle verwenden möchten.

4

Verwenden Sie das Modul Net::FTP, um eine Verbindung zum FTP-Server herzustellen, wie im CPAN-Dokument beschrieben. Um die Site-Einträge zu durchsuchen, müssen Sie cwd/cdup kombinieren, um Verzeichnisse zu verwalten (es sei denn, alle Dateien befinden sich im Stammverzeichnis).

Um die Dateiänderungszeit verwenden, um die mdtm (FILE) Methode, so stellen Sie sicher, zu überprüfen, wenn dieser

durch den Aufruf auf dem aktuellen Server unterstützt wird
if($ftp->feature('MDTM')) { 
    ...check modification time for file... 
} 

Wenn nicht, dann können Sie versuchen, rufen die 'dir' Methode, die Sie die Auflistungen im langen Format erhalten und dann die Datumsinformationen aus den einzelnen Dateiauflistungen extrahieren, um zu vergleichen und zu löschen.

Um die beiden Daten zu vergleichen, verwenden Sie das Modul Date::Calc. Die 'Delta_Days' Methode sollte Ihnen die Anzahl der Tage zwischen zwei Daten geben; Dies kann genauso einfach für jede der oben angegebenen Methoden verwendet werden.

1

Wenn es sich um ein Shell-Skript handelt, ist es besser, ein Skript in einer Crontab auszuführen.

find /tmp -type f -mtime +7 -exec rm {} \;

+0

Wie schlägst du vor, er bekommt den Befehl find auf dem FTP-Server? – aks

+1

Er erhält den Suchbefehl auf dieselbe Weise wie alle anderen auch: indem er sich bei einer interaktiven Shell anmeldet, wenn er kann. –

+0

Ah, ich habe nicht an diese Stummschaltung gedacht. Ich bin es nicht gewohnt, keinen Shell-Zugang zu haben. –

Verwandte Themen