Aller au contenu

Copier le fichier le plus récent vers un répertoire

·216 mots·2 mins

Quand on veut cracher des fichiers de logs sans se préoccuper de la gestion de leur emplacement, il y a logrotate. Le machin qui dit “Ok, j’ai ton fichier dans /var/log/bidule.log, je t’en garde trois semaines, un nouveau fichier par semaine et je te dégage les plus anciens. Cool.

Sinon, il y a des applications qui s’amusent à dumper des sauvegardes directement suffixées avec la date. Une plaie pour savoir quoi sauvegarder, puisqu’on se retrouve très rapidement à avoir 236GB de backups dans un répertoire. Pour éviter d’avoir à sauvegarder cette quantité monstrueuse par SSH, j’ai fouillé pour sortir un petit script permettant d’isoler le fichier le plus récent. De cette manière, je conserve dans un répertoire la dernière version des données, et il me suffit d’envoyer ce répertoire-là pour avoir une copie distante (cela ne gère par contre pas le fait que les fichiers continuent à s’amonceler nonchalement à un endroit que je souhaiterais garder propre).

@echo off

for /F "delims=" %%a in ('dir  /b /od "*.bak"') do set Youngest=%%a
xcopy /y /F "%Youngest%" "E:\Backups\latest.bak"

Les arguments passés à xcopy permettent de confirmer toute question (genre /y : “Pas grave si cela écrase un fichier existant” (c’est même le but) et /F: La destination est un fichier et pas un répertoire”).

Sources: https://stackoverflow.com/questions/19152609/batch-file-to-copy-the-most-recent-file-created#19152899 et https://duckduckgo.com/?q=ccopy+latest+file+youngest&t=ffab&atb=v69-4_z&ia=qa.