Linux shell script pour supprimer les anciens fichiers de ftp
Il y a un problème - besoin de stocker la base de données de sauvegarde sur le FTP. Sur le FTP ne devrait pas être plus de 10 back-ups, c'est à dire, Après l'ajout de sauvegarde sur FTP doit être supprimé, les fichiers les plus anciens pour faire le nombre total de fichiers ne peut pas dépasser 10 pièces.
Comment pouvons-nous mettre en œuvre un tel éloignement, à partir du ftp?
Je suis en train d'écrire un script, mais ne fonctionne pas supprimer:
x=1
ftp -vn $FTP_SERVER<<!
user $FTP_LOGIN $FTP_PASSWORD
binary
put $DUMP_FILE_NAME
for i in `ls -t` do
if [ $x -le $keep ] then
((x++))
continue
fi
delete $i
done
bye
EOF
</i>
Vous devez vous connecter pour publier un commentaire.
C'est un script que j'ai écrit pour supprimer tous les fichiers sur un serveur ftp distant âgés de plus de 7 jours. Il fonctionne en récupérant une liste du répertoire, l'analyse de la modification de la date, et puis re-connexion à supprimer tous les fichiers plus vieux que ndays.
Je soupçonne que les nombres codés en dur dans la boucle (élément de date) peut changer en fonction de la configuration de votre système. Le retour de formatage de la commande ls est dépendante sur le système local paramètres.
En supposant que vos sauvegardes sont tous les jours, alors la configuration de la ndays à 10 pourrait résoudre votre problème.
removing files older than Jul 06 Trying Date ftp 12672814 File: 7 Date ftp 12672913 File: 1 Date ftp 12672889 File: 7 Date ftp 1099121178 File: 7 Date ftp 1099121165 File: 1 Date ftp 1099121206 File: 7 Date File: Removing Trying 62.210.17.5... (remote-file) Could not delete quit: No such file or directory
Celui-ci est de traiter avec sftp et a la bonne date de vérifier que le script de @Graeme est seulement en travaillant dans un délai d'un mois:
Voici un court de solution à l'aide de
lftp
, que vais également travailler avec des sous-répertoires:Elle a deux inconvénients cependant:
Il a passé plusieurs années, et alors que Graeme réponse m'a aidé, mais j'ai été confronté à quelques problèmes avec elle et voici comment les corriger.
Parfois la phrase comme
Trying aaaa:bbb:ccc:dddd::0...
est à la première ligne delisting
varable. Vous devez l'enlever.Aussi jsan commenté il fait face à un autre problème: "d'une valeur trop grande pour la base (jeton d'erreur est "08")" lorsque $DD est 0x il est interprété comme x en octal (problème pour 8 et 9)
J'ai fait face à un même problème. Afin de mieux vous assurez-vous il n'y a pas de nonne-caractères numériques dans
$MM
ou$DD
puis enlever le 0 du début. Comme08
devrait devenir8
.donc avant de faire la boucle sur les fichiers, ajoutez ce code:
Deux premières lignes de supprimer les caractères non numériques et deuxième lignes de résoudre le problème avec
08
Ne pas utiliser le FTP (pour plusieurs raisons). Toutefois, si vous le faites en ssh, vous obtenez un tty, de l'environnement, et tout le reste. Aussi, si vous voulez un fichier de 10 jours à être supprimé (et non pas 10 jours calendrier périmé) un simple
find -mtime +10 -delete
remplacer que pour la boucle. Donc:Si vous voulez FTP, regardez NcFTP, si je me souviens bien il y avait quelques assez décent capacités de script il.