2009-03-17 6 views
-1

J'ai besoin d'un script shell ou Perl qui se connecterait au serveur FTP et supprimerait tous les fichiers datant de plus de 7 jours.Comment puis-je me connecter à un site FTP et supprimer des fichiers datant de plus de 7 jours?

acclamations

+0

Qu'est-ce que c'est Rent-a-Coder? –

+0

find/

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

+1

Si cela ne vous dérange pas d'utiliser Python, cochez [this] (http://stackoverflow.com/questions/2867217/how-to-delete-files-with-a-python-script-from-a-ftp-server -which-are-older-than-7/3114477 # 3114477) répondez à une question connexe. – tzot

Répondre

2

En Perl, vous voulez utiliser Net::FTP « s ls, MDTM et supprimer des commandes.

4

Utilisez le module Net::FTP pour vous connecter au serveur ftp comme indiqué dans le document CPAN. Pour parcourir les listes de sites, vous devrez peut-être combiner cwd/cdup afin de gérer les répertoires (sauf si tous les fichiers se trouvent dans le répertoire racine).

Pour obtenir la date de modification du fichier de la MDTM (FILE) méthode, il suffit de vérifier si cela est pris en charge sur le serveur actuel en appelant

if($ftp->feature('MDTM')) { 
    ...check modification time for file... 
} 

Sinon, vous pouvez essayer d'appeler la méthode 'dir' qui vous obtiendra les listes dans le format long, puis extraire les informations de date à partir des listes de fichiers individuels afin de comparer et supprimer.

Pour comparer les deux dates, utilisez le module Date::Calc. La méthode 'Delta_Days' devrait vous indiquer le nombre de jours entre deux dates; Cela peut être utilisé aussi facilement pour l'une des méthodes spécifiées ci-dessus.

1

Si c'est un script shell que vous recherchez, il vaut mieux exécuter un script dans une crontab.

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

+0

Comment suggérez-vous qu'il obtienne la commande find sur le serveur ftp? – aks

+1

Il obtient la commande find de la même manière que tout le monde: en se connectant à un shell interactif s'il le peut. –

+0

Ah oui, je ne pensais pas à cette sourdine. Pas habitué à ne pas avoir accès à la coquille, je le suis. –