[script-shell] Crontab

Résolu/Fermé
zekiller3 Messages postés 7 Date d'inscription vendredi 27 avril 2007 Statut Membre Dernière intervention 1 mai 2007 - 27 avril 2007 à 22:17
zekiller3 Messages postés 7 Date d'inscription vendredi 27 avril 2007 Statut Membre Dernière intervention 1 mai 2007 - 28 avril 2007 à 00:50
#!/bin/bash

_date=$(date "+%Y-%m-%d_%H-%M")
_prefix_name="backup_home_"
nom_archive="$_prefix_name$_date"

_today=$(date "+%A")
_path="$HOME/Desktop/script/$_today"


if [ $(date "+%u") -eq 5 ]
# 5 : si on est vendredi
then	
	#rajouter la creation de dossier "$_today"
	test -d $_path
	if [ $? -ne 0 ]
	then mkdir $_path
	fi
	#creation de l'archive du dimanche
	tar -zcvvf $HOME/Desktop/script/"$_today"/$nom_archive.tgz $HOME/Desktop/script/dossier 
	

	#suppression des archives de la semaine
	rm $HOME/Desktop/script/backup_home_*.tgz

	#suppression des archives du dimanche anciennes de plus d'un mois

	
	_nbfic=$(ls -t $_path | grep $_prefix_name | wc -l)
        #je compte le nombre d'archives
	
echo "nombre de fichier : $_nbfic"
	if [ $_nbfic -gt 4 ]
	then 	#_nb_fichier_del : nombre de fichier a supprimer
		_nb_fichier_del=$(expr $_nbfic - 4)
		echo "nombre de fichier a supprimer : $_nb_fichier_del"
		#_fichier_a_supp : liste des fichiers a supprimer
		_fichier_a_supp=$(ls -t $_path | grep $_prefix_name | tail -$_nb_fichier_del)
		for fic in $_fichier_a_supp
		do
		echo $fic >> $_path/log
		rm $_path/$fic
		done
	fi




else	tar -zcvvf $HOME/Desktop/script/$nom_archive.tgz $HOME/Desktop/script/dossier 

fi


explication rapide :
je fais une sauvegarde de dossier tous les jours
si on est dimance (ici vendredi pour mes test)
on créé un dossier spécial et on y met les sauvegardes, seulement
on doit garder uniquement les 4 plus récentes sauvegardes du dimanche
toutes les autres sauvegardes effectuées pendant la semaine et dimanche (d'il y a plus de 4 semaines) doivent être supprimés

mon problème est que lors de l'édition de la crontab
j'ai mis
* * * * * sh ..../monbackup.sh
pour qu'il exécute toutes les minutes le script (pour mes tests)
mais apparement mon code avec du ls -t n'est pas exécuté!
il me faut donc un équivalent.. ou un moyen de récuperer les 4 fichiers les plus récents et supprimer le reste
A voir également:

1 réponse

zekiller3 Messages postés 7 Date d'inscription vendredi 27 avril 2007 Statut Membre Dernière intervention 1 mai 2007
28 avril 2007 à 00:50
en fait ça marche ... au début il ne me faisait pas la suppression de fichier maintenant oui...
voilà problème résolu :) les aléas de linux
0