[Synology] Vider les fichiers de plus de 7j d'un dossier Transfert

Vous trouverez ici quelques contributions sur des sujets variés mais qui n'ont aucun rapport avec le monde de l'aérien
Règles du forum
Courtoisie envers les membres et respect envers les sociétés sont les maitre mots de ces forums. Tout manquement sera sanctionné par un rappel à l'ordre, voir une exclusion temporaire ou définitive des forums !
Avatar de l’utilisateur
FTP
Messages : 1028
Inscription : 06 mars 2004 14h41
Contact :

[Synology] Vider les fichiers de plus de 7j d'un dossier Transfert

Message par FTP »

Sur un NAS, il arrive couramment de paramétrer un répertoire pour servir d'espace de transfert de données entre les différents utilisateurs. Ces données sont généralement des fichiers qu'un utilisateur a sur son ordinateur, qu'il veut transmettre à un autre utilisateur mais qui sont trop gros pour être attachés en pièce jointe d'un email. Du coup, il a la possibilité de déposer une copie dans un dossier généralement appelé "Transfert", copie que le(s) destinataire(s) peuvent venir chercher et récupérer sur leur(s) ordinateur(s).

Problème, ce genre de répertoire se rempli généralement très vite car les utilisateurs déposent leurs fichiers & dossiers à transférer, les destinataires les récupèrent mais bien souvent sans les supprimer du répertoire de transfert et ensuite plus personne ne fait le ménage. Et donc au fil des jours, ça grossit, ça grossit, jusqu'à remplir le quota du disque.

Une solution (parmi bien d'autre) consiste à fixer une règle et à faire faire le ménage automatiquement.
Exemple : j'ai personnellement fixé comme règle que dans le dossier Transfert, on a une semaine pour récupérer et supprimer les fichiers déposés. A défaut, ils sont automatiquement supprimés par le NAS.
C'est simple, pas aussi stricte qu'un vidage du répertoire toutes les nuits, mais efficace.

Maintenant, reste plus qu'Ă  le mettre en Ĺ“uvre :P
Pour ce faire, rien de plus simple. DSM a l'outil pour le mettre en Ĺ“uvre en 2mn.

Procédure
  • Panneau de configuration > Planificateur de tâches
  • CrĂ©er > Tâche planifiĂ©e > Script dĂ©fini par l'utilisateur
    Image
  • ParamĂ©trer les champs suivant puis cliquer sur [OK]...
    • Onglet GĂ©nĂ©ral
      - Tâche : Nettoyage de Transfert
      - Utilisateur : root (c'est important, car la tâche peut avoir à supprimer des fichiers/dossiers de tous les utilisateurs !)
      Image
    • Onglet Programmer
      - Exécuter les jours suivants : Quotidienne
      - Première heure d'exécution : 04:00
      Image
    • Onglet Paramètres de tâche
      - Optionnel : cocher "Envoyer les détails d'exécution par e-mail" puis saisir l'adresse email
      - Script défini par l'utilisateur : exemple de code à personnaliser (cf. ci dessous)...

      Code : Tout sélectionner

      printf "\nFichiers supprimés aujourd'hui..."
      printf "\n(vieux de plus d'une semaine)\n"
      find /volume1/Transfert -mindepth 1 -maxdepth 1 ! -user root -ctime +6 -execdir rm -rf {} + -print
      printf "\nFichiers Ă  supprimer demain...\n"
      find /volume1/Transfert -mindepth 1 -maxdepth 1 ! -user root -ctime +5 -print
      Image

Explications & personnalisation du script
  • printf "votre texte" : Insert une ligne d'explication dans la notification par email envoyĂ©e par le NAS.
    Les 3 lignes printf sont inutiles si vous n'activez pas de notification par email !
  • \n dans le texte : Insert un saut de ligne
  • find /volume1/Transfert : Fait la liste de tous les fichiers & rĂ©pertoires dans le rĂ©pertoire "/volume1/Transfert"
    Vous devez personnaliser ce chemin pour indiquer l'emplacement de VOTRE dossier Ă  nettoyer
  • mindepth 1 : Ne liste que les fichiers & rĂ©pertoires au minimum 1 niveau au-dessus du rĂ©pertoire racine ; donc ne liste pas le rĂ©pertoire "Transfert" lui-mĂŞme
  • maxdepth 1 : Ne liste que les fichiers & rĂ©pertoires au maximum 1 niveau au-dessus du rĂ©pertoire racine ; donc ne liste que les fichiers & dossiers dans "Transfert" et pas ce que pourrait contenir ces Ă©ventuels dossiers
  • ! -user root : Exclus de la liste tous les fichiers & rĂ©pertoires dont le propriĂ©taire est le compte "root" comme la poubelle ou certains fichiers systèmes cachĂ©s de DSM
  • -ctime +6 : Ne liste que les fichiers & rĂ©pertoires dont les propriĂ©tĂ©s n'ont pas changĂ© depuis + de 6 jours pleins, soit + de 6,9999 jours, donc en fait les fichiers & rĂ©pertoires de 7j et +.
    Vous pouvez changer ce nombre de jours Ă  votre convenance
  • execdir rm -rf {} + : Supprime tous les fichiers & rĂ©pertoires (qu'ils soient vides ou pleins) qui ont Ă©tĂ© listĂ©s
  • -print : Insert la liste des fichiers & rĂ©pertoires concernĂ©s dans l'email de notification
    L'instruction -print est inutile si vous n'activez pas de notification par email

Conseils
L'utilisation d' execdir rm -rf {} + est sensible, car cette instruction supprime tout fichier ou dossier trouvé par l'instruction FIND à l'emplacement indiqué et retenu dans sa liste.
Si vous pointez au mauvais endroit, sur un répertoire dont il fallait conserver les données, too bad, l'instruction le videra.
Donc je vous conseille de faire d'abord un ou plusieurs essais avec notification par email et sans l'instruction execdir rm -rf {} +.
Vous pourrez pour cela utiliser le bouton [Exécuter] du Planificateur de tâches pour tester votre script sans attendre l'heure planifiée.
L'email de notification vous enverra la liste des fichiers qu'ils aurait dû normalement supprimer et si tout est bon, vous pourrez alors modifier votre script pour remettre l'instruction execdir rm -rf {} +. Sinon, vérifiez ce qui ne va pas, ajustez votre script et refaite un test.


Et voilĂ , c'est tout ! :mrgreen:

Si vous avez bien personnalisé les paramètres, toutes les nuits, à 4h du matin, le NAS regardera automatiquement quels sont les fichiers ou dossiers de plus de 7 jours dans le répertoire Transfert, les supprimera et laissera tous les autres. Et dans la notification par email, le script vous dira quels sont ces fichiers et dossiers qu'il a supprimé et quels sont ceux qu'il devrait supprimer la nuit prochaine.

Enjoy! :wink:
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir 24h !