FTP – Je veux seulement garder les 10 derniers fichiers – supprimer les LRU

J’ai créé un script shell pour sauvegarder mes fichiers Web + fichiers de firebase database, les placer dans une archive tar et les transférer hors site. Je voudrais l’exécuter X fois par semaine, mais je veux seulement garder les 10 dernières sauvegardes sur le site FTP.

Comment puis-je le faire le mieux? Dois-je faire ce travail du côté du script shell, ou existe-t-il une commande FTP pour vérifier les dernières modifications et les dernières tâches administratives?

Tout avis sera le bienvenu.

Merci,

Une façon de faire ceci serait d’utiliser le jour de la semaine dans le nom de fichier:

  • backup-mon.tgz
  • sauvegarde-tue.tgz
  • etc.

Ensuite, lorsque vous effectuez une sauvegarde, vous supprimez ou écrasez le fichier de sauvegarde pour le jour de la semaine en cours.

(Bien sûr, de cette façon, vous obtenez seulement les 7 derniers fichiers, mais c’est une méthode assez simple)

Avez-vous un access shell au serveur FTP? Si oui, je suis sûr que vous pourriez écrire un script pour ce faire, et planifier un travail cron pour faire le nettoyage périodique.

Voici quelque chose qui devrait fonctionner:

num_files_to_keep=10 i=0 for file in `ls -tr`; do if [ $i -ge $num_files_to_keep ]; then rm $file; fi; i=`expr $i + 1`; done 
 find . \! -newer `ls -t|head -n 10|tail -n 1` 

Malheureusement, si elle est exécutée quand il y a moins de 10 fichiers, elle supprime le fichier le plus ancien à chaque exécution (parce que! -Newer teste l’insead “plus ancien ou égal” de “ssortingctement plus ancien”.

 [ `ls|wc -l` -gt 10 ] && find . \! -newer `ls -t|head -n 10|tail -n 1` 

Si vous suivez le chemin du shell, essayez ceci:

 find /your-path/ -mtime +7 -type f -exec rm -rf {} \; 

Cela supprimerait tout ce qui est plus ancien qu’une certaine date (dans ce cas 7 jours). Peut-être plus pertinent selon que vous devez conserver plusieurs sauvegardes pour une journée. Par exemple, hier, j’ai effectué dix révisions du même site Web.