2009-07-06 7 views
0

J'ai créé un script shell pour sauvegarder mes fichiers web + sauvegarde de base de données, le mettre dans une archive tar et FTP hors site. Id aime courir X fois par semaine mais je veux seulement garder les 10 dernières sauvegardes sur le site FTP.FTP - Je veux seulement garder les 10 derniers fichiers - supprimer LRU

Comment puis-je faire de mon mieux? Est-ce que je devrais faire ce travail du côté du script shell, ou y a-t-il une commande FTP pour vérifier les choses modifiées et administrées de cette façon?

Tout conseil serait apprécié.

Merci,

Répondre

2

Une façon de faire quelque chose comme cela serait d'utiliser le jour de la semaine dans le nom du fichier:

  • sauvegarde mon.tgz
  • sauvegarde tue.tgz
  • etc.

Ensuite, quand vous sauvegardez, vous supprimer ou remplacer le fichier de sauvegarde pour le jour de la semaine.

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

+0

Haha, c'est en fait assez élégant. Merci pour la suggestion. – barfoon

1

Avez-vous accès au shell au serveur FTP? Si c'est le cas, je suis sûr que vous pourriez écrire un script pour faire cela, et programmer un travail cron pour faire le nettoyage périodique.

est ici 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 
+0

ls -TR | while read FILE faire ...... fait ou un ensemble IFS pour prendre soin des fichiers avec des espaces blancs. – ghostdog74

1
find . \! -newer `ls -t|head -n 10|tail -n 1` 

Malheureusement, si exécutés quand il y a moins de 10 fichiers, il supprime le fichier le plus ancien sur chaque exécution (parce que les tests de -newer pour « plus ou égale! "INSEAD de « strictement plus » - cela peut être résolu en vérifiant d'abord:

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

Si vous allez sur le chemin de la coquille, essayez ceci:

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

Ceci supprimerait tout ce qui est antérieur à 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 fait dix révisions du même site.

+0

p.s. Je viens juste de dire que c'est une duplication de la réponse de Karel - désolé pour ça. –