Pages : 1
#1 Le 09/06/2015, à 08:56
- Nhadroj
Question sur un script
Bonjour,
Petite question bénigne, j'ai écris un script qui balaye l'ensemble d'un répertoire et ses sous-répertoire pour lister les fichiers plus vieux de 45 jours.
Pouvez-vous me dire s'il est possible que ce script supprime par inadvertance des fichiers ? Je ne pense pas mais je préfère demander à une communauté expérimentée.
Merci d'avance, voici le script :
#! /bin/bash
IFS=''
find /volume1/ -type f | grep -v "@appstore" | grep -v "@autoupdate" | grep -v "@database" | grep -v "@eaDir" | \
grep -v "@httpd.core" | grep -v "@spool" | grep -v "@tmp" | grep -v "aquota.group" | grep -v "aquota.user" | \
grep -v "lost+found" | sed -e 's/\\/\\\\/g' | sed -e 's/ /\\ /g' > resultat_find
while read ligne; do
date_fichier=$(stat $ligne | tail -3 | head -1 | cut -c 9-27);
timestamp_fichier=$(date -d $date_fichier +%s);
timestamp_actuel=$(date +%s);
user=$(stat $ligne | head -4 | tail -1 | cut -d"/" -f3 | cut -d")" -f1 | sed -e 's/ //g');
let "dif_timestamp=$timestamp_actuel-$timestamp_fichier"
let "dif_jour=$dif_timestamp/86400"
if [ $dif_timestamp -gt 3888000 ]; then
echo $ligne";"$user";"$dif_jour;
fi
done < resultat_find | sed -e 's/\\/\\\\/g' | sed -e 's/ /\\ /g' > tab.csv
while read ligne; do
chemin=$(echo $ligne | cut -d";" -f1 | sed -e 's/\\/\\\\/g' | sed -e 's/ /\\ /g');
#action à effectuer sur le fichier
done < tab.csv
Hors ligne
#2 Le 09/06/2015, à 09:25
- pingouinux
Re : Question sur un script
Bonjour,
Ton script va écraser, s'ils existent déjà, les fichiers resultat_find et tab.csv dans le répertoire courant.
Sinon, pour trouver les fichiers modifiés depuis plus de 45 jours :
find /volume1/ -type f -mtime +45
Hors ligne
#3 Le 09/06/2015, à 09:35
- Nhadroj
Re : Question sur un script
Oui c'est exact pour les fichiers resultat_find et tab.csv, mais ceux la m'importent peu.
Juste, j'avais essayé en premier cette ligne de code mais ça ne va pas. Je travail sur un NAS Synology et la date de modification retourné avec mtime +45 retourne une mauvaise date, qui remonte pour certains fichier jusqu'à 2004 alors qu'ils ont été modifiés la semaine dernière. Problème de date Windows à mon avis au moment du dépôt du fichier sur le NAS.
C'est pour cela que je passe par stat et que je découpe la bonne date ^^
En tout cas aucun fichier de /volume1/ ne peut être supprimé avec ce script c'est le principal, merci
Hors ligne
#4 Le 09/06/2015, à 10:14
- pingouinux
Re : Question sur un script
Jette un œil à man stat. Tu peux utiliser l'option -c (ou --format) pour filtrer la sortie de la commande. Par exemple
stat -c "%Y" fichier
va te donner la date de dernière modification du fichier en secondes.
Hors ligne
#5 Le 09/06/2015, à 10:21
- Nhadroj
Re : Question sur un script
Sur les NAS Synology, c'est du linux de base réduit, il n'y a même pas de man -_- et pas beaucoup d'options sur les commandes, pour ça que je découpe avec mes tail head et autres..
Mais merci je ne connaissais pas
Hors ligne