1 votes

Suppression de tous les fichiers du répertoire source après la robocopie, mais conservation de ceux qui provoquent des erreurs

J'envisage d'utiliser robocopy pour déplacer des fichiers et des dossiers d'un répertoire sur un serveur vers un répertoire sur un disque dur, à l'aide de la commande suivante,

robocopie [source] [destination] /e /move /xo

En cas de conflit de nom de fichier, je comprends qu'il faut remplacer les fichiers sur le disque dur uniquement s'il est plus récent (ou exactement du même âge ?), puis supprimer les fichiers qui ont été copiés.

Idéalement, j'aimerais que le répertoire source soit vidé de ses fichiers, mais je soupçonne un problème : si un fichier n'est pas transféré (il est peut-être en cours d'utilisation ou une version plus récente existe dans le répertoire de destination), il ne sera pas supprimé.

Dans le cas d'une erreur réelle dans le processus de copie (par exemple, si robocopy refuse de déplacer un fichier en cours d'utilisation), je ne peux pas simplement ajouter une commande ultérieure pour supprimer l'ensemble du répertoire source, car cela pourrait entraîner la perte de données qui n'ont pas été transférées.

J'envisage d'utiliser ce fichier comme un fichier batch qui sera exécuté régulièrement par Windows en tant que tâche planifiée.

Ma question est donc la suivante : existe-t-il un moyen simple et automatisé pour que robocopy supprime les fichiers qui ont été transférés correctement (ce qu'il fait déjà) ou ceux pour lesquels des copies plus récentes existent déjà dans la destination (ce qu'il ne fait pas actuellement), tout en conservant les fichiers qui n'ont pas été transférés en raison d'une autre erreur (par exemple, permissions, fichier en cours d'utilisation, etc.)

Existe-t-il un moyen plus simple de procéder ?

0voto

Mimp Points 174

Pour des opérations de ce type, j'ai tendance à utiliser le commutateur miroir (/mir), qui permet de dupliquer un répertoire vers un second emplacement. Lorsque des éléments sont déplacés hors de la source, ils sont également supprimés de la destination. Je suis conscient que cela peut ne pas fonctionner dans votre situation.

Vous pouvez simplement avoir besoin d'un moyen de nettoyer les fichiers du répertoire source une fois qu'ils sont considérés comme suffisamment anciens. Est-ce que quelque chose comme une deuxième tâche exécutant forfiles fonctionnerait pour vous ?

forfiles /d -14 /p C:\myfolder /C "cmd /c del @file"

Cette opération permet de supprimer tous les fichiers datant de plus de 14 jours.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X