web-dev-qa-db-fra.com

Suppression automatique des fichiers de plus de 7 jours

Je suis un noob complet sur Linux mais je commence à comprendre. J'ai un serveur Ubuntu 16.04 utilisant un serveur FTP pour sauvegarder des fichiers vidéo de sécurité. Les fichiers seront stockés dans des dossiers tels que: /home/securityfolder1, /home/securityfolder2, /home/securityfolder3 et ainsi de suite.

Notez que chaque securityfolderN est un utilisateur différent.

Parce que je ne veux pas que mes disques durs soient pleins tout le temps, je veux supprimer tous les jours des fichiers de plus de 7 jours dans ces dossiers.

15

Tout d'abord, cette commande recherchera et supprimera tous les fichiers de plus de 7 jours dans n'importe quel sous-répertoire de /home dont le nom commence par securityusername__:

find /home/securityuser* -mtime +6 -type f -delete

Vous avez besoin de -mtime +6 et non de +7 car -mtime compte 24 périodes. Comme expliqué dans la section -atime de man find (-mtime fonctionne de la même manière):

   -atime n
          File  was  last  accessed n*24 hours ago.  When find figures out
          how many 24-hour periods ago the file  was  last  accessed,  any
          fractional part is ignored, so to match -atime +1, a file has to
          have been accessed at least two days ago.

Donc, pour trouver un fichier qui a été modifié il y a 7 jours ou plus, vous devez rechercher les fichiers qui ont été modifiés il y a plus de 6 jours, d'où -mtime +6.

L'étape suivante consiste à exécuter cette commande une fois par jour. Étant donné que chaque securityuserNest un utilisateur différent (vous voudrez peut-être repenser cette configuration, cela rendra tout plus compliqué), vous devez l'exécuter en tant que root. Donc, éditez /etc/crontab:

Sudo nano /etc/crontab

Et ajoutez cette ligne:

@daily root find /home/securityuser* -mtime +6 -type f -delete

Cela exécutera la commande findune fois par jour et supprimera les fichiers.

23
terdon

selon ma connaissance:

essayez la commande find comme ceci:

find ./dirc/* -mtime +6 -type f -delete

./dirc/* : is your directory (Path)
-mtime +6 : modified more than 6 days ago (therefore, at least 7 days ago)
-type f : only files
-delete : no surprise. Remove it to test before like rm
4
km8295