[Shell] Lister des fichiers, et archiver
Résolu
yacleouf
Messages postés
461
Statut
Membre
-
yacleouf Messages postés 461 Statut Membre -
yacleouf Messages postés 461 Statut Membre -
Bonjour le forum !
Tout d'abord, sachez que je suis extra novice en scripting shell ... :s
je dois faire un petit script de purge qui dois lister les fichiers qui ont une date "d'ancienneté" supérieur à dix jours par rapport à la date d'aujourd'hui, et les archiver.
Par contre comme je l'ai dis juste avant je ne comprends rien à tous ça :)
j'ai bien entendu fouiner sur le net, et assemblé un semblant de script qui fais ce que j'ai besoin :
Pour l'instant voilà ce que j'ai réussi à faire, mon soucis, pour l'heure est que je ne sais pas comment :
- Exécuter ce script périodiquement ? (tout les 10 jours par exemple ?)
- Comment faire pour qu'une fois, tout les fichiers sont trouvés, lancer la compression de ceux ci ?
- Comment lancer la commande find sur un répertoire différents ? en gros le script est dans '/var/ftp/TestArchivage' et j'essaie de l'exécuter ici : '/var/www/html'
Soyez indulgent sur ce que j'ai déjà fait je débute tout juste !! :-)
Merci d'avance à celui ou celle qui pourra m'aider !
Google is your friend!
Tout d'abord, sachez que je suis extra novice en scripting shell ... :s
je dois faire un petit script de purge qui dois lister les fichiers qui ont une date "d'ancienneté" supérieur à dix jours par rapport à la date d'aujourd'hui, et les archiver.
Par contre comme je l'ai dis juste avant je ne comprends rien à tous ça :)
j'ai bien entendu fouiner sur le net, et assemblé un semblant de script qui fais ce que j'ai besoin :
DEST="/var/ftp/TestArchivage/Backup/"
#Recherche des fichiers
find . -mtime +10 -type f -name "*.xml" -exec grep -il 'pattern' {} \;
tar -cvfz Archive-'date +%d-%m-%Y'.tgz /var/ftp/TestArchivage/Archive/ $DEST
Pour l'instant voilà ce que j'ai réussi à faire, mon soucis, pour l'heure est que je ne sais pas comment :
- Exécuter ce script périodiquement ? (tout les 10 jours par exemple ?)
- Comment faire pour qu'une fois, tout les fichiers sont trouvés, lancer la compression de ceux ci ?
- Comment lancer la commande find sur un répertoire différents ? en gros le script est dans '/var/ftp/TestArchivage' et j'essaie de l'exécuter ici : '/var/www/html'
Soyez indulgent sur ce que j'ai déjà fait je débute tout juste !! :-)
Merci d'avance à celui ou celle qui pourra m'aider !
Google is your friend!
A voir également:
- Script shell lister les fichiers d'un répertoire
- Classic shell - Télécharger - Personnalisation
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Script vidéo youtube - Guide
- Comment ouvrir un fichier bin ? - Guide
1 réponse
Salut,
Tu as tout ce qu'il te faut dans ce que tu as trouvé ;-))
- Exécuter ce script périodiquement ? (tout les 10 jours par exemple ?)
Voir crontab
- Comment faire pour qu'une fois, tout les fichiers sont trouvés, lancer la compression de ceux ci ?
Juste avec la commande find à partir du moment où l'option "-mtime +10 -type f" te retourne bien les fichiers voulus, autrement dit, tous les fichiers plus vieux de 10 jours.
- Comment lancer la commande find sur un répertoire différents ? en gros le script est dans '/var/ftp/TestArchivage' et j'essaie de l'exécuter ici : '/var/www/html'
Tout simplement en donnant le répertoire à la commande find. Voilà un exemple combinant la réponse à ta question précédente et celle-ci :
L'archive "archive.tgz" sera créée dans le répertoire d'où aura été lancée la commande.
Tu as tout ce qu'il te faut dans ce que tu as trouvé ;-))
- Exécuter ce script périodiquement ? (tout les 10 jours par exemple ?)
Voir crontab
- Comment faire pour qu'une fois, tout les fichiers sont trouvés, lancer la compression de ceux ci ?
Juste avec la commande find à partir du moment où l'option "-mtime +10 -type f" te retourne bien les fichiers voulus, autrement dit, tous les fichiers plus vieux de 10 jours.
- Comment lancer la commande find sur un répertoire différents ? en gros le script est dans '/var/ftp/TestArchivage' et j'essaie de l'exécuter ici : '/var/www/html'
Tout simplement en donnant le répertoire à la commande find. Voilà un exemple combinant la réponse à ta question précédente et celle-ci :
find /var/www/html -mtime +10 -type f -name "*.xml" -exec tar -cvzf archive.tgz {} +
L'archive "archive.tgz" sera créée dans le répertoire d'où aura été lancée la commande.
merci pour ta réponse !
je vais tester de lancer manuellement la commande comme tu me la indiqué.
Mon soucis était peut être que je ne l'avais pas mis en une seule ligne !?
Merci de ton aide zipe31