Bonjour,
Voici mon probl=E8me : Je souhaite supprimer des fichiers anciens
(disons vieux de 15 jours) sur un site FTP.
Je ne peux m'y connecter qu'en FTP.
Le serveur est sous Linux, et je peut avoir acc=E8s =E0 la librairie
NCFTP (dont le ncftpls qui me permet de lister facilement toute
l'arborescence du serveur).
L'id=E9e est donc de r=E9cup=E9rer la date du jour, de calculer - 15
jours, de lister les fichiers du site (en FTP) pour filtrer les trop
vieux et de les supprimer (=E7a fait beaucoup).
Sans fichier temporaire c'est mieux, un script qui pipe l'entr=E9e d'une
commande vers une autre, sinon, avec c'est bien aussi.
J'aimerai le faire en script shell, mais je suis preneur d'autres
langages (python ?).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Joe Linux
Bonjour, Voici mon problème : Je souhaite supprimer des fichiers anciens (disons vieux de 15 jours) sur un site FTP. Je ne peux m'y connecter qu'en FTP. Le serveur est sous Linux, et je peut avoir accès à la librairie NCFTP (dont le ncftpls qui me permet de lister facilement toute l'arborescence du serveur).
Le problème reside dans la conversion de la date renvoyée par ncftpls en un timestamp :
ncftpls -R -u user -p motdepasse ftp://host/ | awk ' BEGIN { path=""; file=""; p=0 } { if($1 ~ "^./") { path=$1;}; if ($1 ~ "^-") {file = $9 ; date = $6" "$7" "$8 ; p=1} ; if(p==1) {print path" "file" "date;}; p=0 }' | sed -e 's/: ///g'
devrait te donner la liste dans un format utilisable, comme ./chemin/fichier Mon DD YYYY ou ./chemin/fichier Mon DD hh:mm
Reste à le piper dans un truc qui transforme cette date en timestamp (sachant que dans le premier cas, le fichier est forcément vieux de plus d'un an, donc, à effacer) et voir si ce timestamp est inférieur de plus de 15 x 86400 secondes à l'actuel;
Et ensuite avec des guillemets inversés,
for FILE in `commande`; do ncftp .... ; done
Par contre j'ai pas de solution miracle pour transformer la date en timestamp; En php (en ligne de commande) ca pourrait se faire avec :
Ca demanderai du test, mais au moins, il y a plusieurs langage differents : awk, sed, php... Je fais l'hypothese que le client est aussi sous linux... Evidement on peut rassembler tout dans un fichier pour le rendre plus lisible : !/usr/bin/bash
Bonjour,
Voici mon problème : Je souhaite supprimer des fichiers anciens
(disons vieux de 15 jours) sur un site FTP.
Je ne peux m'y connecter qu'en FTP.
Le serveur est sous Linux, et je peut avoir accès à la librairie
NCFTP (dont le ncftpls qui me permet de lister facilement toute
l'arborescence du serveur).
Le problème reside dans la conversion de la date renvoyée par ncftpls
en un timestamp :
ncftpls -R -u user -p motdepasse ftp://host/ | awk ' BEGIN { path="";
file=""; p=0 } { if($1 ~ "^./") { path=$1;}; if ($1 ~ "^-") {file = $9
; date = $6" "$7" "$8 ; p=1} ; if(p==1) {print path" "file" "date;};
p=0 }' | sed -e 's/: ///g'
devrait te donner la liste dans un format utilisable, comme
./chemin/fichier Mon DD YYYY
ou
./chemin/fichier Mon DD hh:mm
Reste à le piper dans un truc qui transforme cette date en timestamp
(sachant que dans le premier cas, le fichier est forcément vieux de
plus d'un an, donc, à effacer) et voir si ce timestamp est inférieur
de plus de 15 x 86400 secondes à l'actuel;
Et ensuite avec des guillemets inversés,
for FILE in `commande`; do ncftp .... ; done
Par contre j'ai pas de solution miracle pour transformer la date en
timestamp; En php (en ligne de commande) ca pourrait se faire avec :
Ca demanderai du test, mais au moins, il y a plusieurs langage
differents : awk, sed, php...
Je fais l'hypothese que le client est aussi sous linux...
Evidement on peut rassembler tout dans un fichier pour le rendre plus
lisible :
!/usr/bin/bash
Bonjour, Voici mon problème : Je souhaite supprimer des fichiers anciens (disons vieux de 15 jours) sur un site FTP. Je ne peux m'y connecter qu'en FTP. Le serveur est sous Linux, et je peut avoir accès à la librairie NCFTP (dont le ncftpls qui me permet de lister facilement toute l'arborescence du serveur).
Le problème reside dans la conversion de la date renvoyée par ncftpls en un timestamp :
ncftpls -R -u user -p motdepasse ftp://host/ | awk ' BEGIN { path=""; file=""; p=0 } { if($1 ~ "^./") { path=$1;}; if ($1 ~ "^-") {file = $9 ; date = $6" "$7" "$8 ; p=1} ; if(p==1) {print path" "file" "date;}; p=0 }' | sed -e 's/: ///g'
devrait te donner la liste dans un format utilisable, comme ./chemin/fichier Mon DD YYYY ou ./chemin/fichier Mon DD hh:mm
Reste à le piper dans un truc qui transforme cette date en timestamp (sachant que dans le premier cas, le fichier est forcément vieux de plus d'un an, donc, à effacer) et voir si ce timestamp est inférieur de plus de 15 x 86400 secondes à l'actuel;
Et ensuite avec des guillemets inversés,
for FILE in `commande`; do ncftp .... ; done
Par contre j'ai pas de solution miracle pour transformer la date en timestamp; En php (en ligne de commande) ca pourrait se faire avec :
Ca demanderai du test, mais au moins, il y a plusieurs langage differents : awk, sed, php... Je fais l'hypothese que le client est aussi sous linux... Evidement on peut rassembler tout dans un fichier pour le rendre plus lisible : !/usr/bin/bash