Comment puis-je créer un script pour placer des fichiers plus anciens que chaque jour précédent dans leur propre dossier?

J’exécute un script inutilement complexe qui ressemble à cette commande:

find /home/user/videos/*.avi -mtime +0 -exec mv -f {} "/home/nb/videos/1 day old" \; 

Et puis j’exécute la même commande, mais cette fois, du dossier “1 day old” dans un dossier “2 days old”. Et d’autres commandes continuent à se répéter jusqu’à l’âge de 7 jours! Ainsi, chaque jour, les fichiers du dossier “X jours précédent” sont déplacés vers le dossier du lendemain.

J’essaye fondamentalement d’organiser automatiquement les fichiers, en s’exécutant dans cron, pour déplacer les fichiers de plus de X jours dans le bon dossier. C’est inefficace, mais j’ai besoin que cela se produise. Y a-t-il un moyen plus facile et plus efficace?

Une fois dans le dossier ancien de 7 jours, j’ai la dernière commande qui supprime les fichiers de plus de 7 jours de ce dernier dossier.

J’utilise (pour une situation similaire) une manière non standard: logrotate .

Toutes les vidéos de /home/user/videos /home/nb/videos/backup/videos.tar sauvegardées dans le fichier /home/nb/videos/backup/videos.tar (quotidien), puis les déplacements des anciens fichiers tar vers ...1.tar , ...2.tar etc. Les sauvegardes de plus de 7 jours seront supprimées.

J’ai inclus mv /home/user/videos/*.avi /var/tmp pour conserver une copie des vidéos au cas où quelque chose se passerait mal.

Pour activer cette configuration logrotate, placez-y un fichier similaire dans le répertoire /etc/logrotate.d :

 /home/nb/videos/backup/videos.tar { rotate 7 daily notifempty nocreate nocompress missingok postrotate if ls /home/user/videos/*.avi > /dev/null 2>&1; then tar cf /home/nb/videos/backup/videos.tar /home/user/videos/*.avi mv /home/user/videos/*.avi /var/tmp fi endscript } 

Pour plus d’informations, voir man logrotate .