6 votes

Rsync uniquement les fichiers créés ou modifiés après une date et une heure

L'objectif est de synchroniser (ou d'utiliser tout autre outil permettant d'obtenir le résultat souhaité) uniquement les fichiers créés ou modifiés après une certaine date. Cela devrait fonctionner avec des noms de fichiers contenant des espaces (et/ou d'autres caractères qui nécessitent d'être échappés).

J'ai réussi à utiliser cette commande sur OS X 10.6.5 : find . -newermt "2010-11-23 16:52:50" -type f -exec rsync -vuptn '{}' ../rsync_test/ '; Je ne pense pas que -newermt fonctionne sur d'autres systèmes d'exploitation que OS X cependant.

Le problème avec cette commande est qu'elle exécute rsync une fois par fichier trouvé et cela ne semble pas être la bonne façon de procéder. J'ai essayé de changer le dernier ; par un + pour qu'il attende la liste complète des fichiers, mais cela casse (j'ai essayé avec "+", \+ et d'autres moyens pour échapper).

Contexte : je cherche à sauvegarder mes fichiers dans un emplacement distant. Les fichiers étant de nombreuses photos en raw et autres formats (travail de photographie. environ 30 Go par jour), la synchronisation via le réseau prendrait un temps inacceptable en raison de la faible bande passante de téléversement (ADSL c'est nul). L'idée est donc d'avoir beaucoup d'espace disque à un emplacement distant et de transporter les fichiers nouveaux/modifiés sur un petit disque dur externe une fois par semaine. rsync peut alors être facilement utilisé pour ajouter les fichiers nouveaux/modifiés à l'emplacement distant. Pour cela, je dois synchroniser les fichiers nouveaux/modifiés sur un disque dur externe au cours de la semaine afin d'avoir toujours 2 copies de chaque fichier soit à un emplacement distant pour les fichiers de plus d'une semaine, soit sur un disque dur externe pour les fichiers nouveaux/modifiés depuis le dernier transport.

J'avais l'intention de faire fonctionner cette commande toutes les 10 minutes (via cron) avec la date et l'heure de la dernière exécution.

Pouvez-vous corriger ma commande ? Ou avez-vous une solution encore meilleure ?

7voto

Eric Noob Points 531

Je suis un peu confus quant à ce que vous essayez de faire. Rsync, à lui seul, ne transfère que les fichiers nouveaux/modifiés. Donc, si vous transportez des données sur un disque dur une fois par semaine, vous pouvez exécuter rsync périodiquement et cela ne consommera pas plus de bande passante que (et peut-être moins que) la solution que vous proposez en utilisant find.

Tout ce travail avec find semble comme si vous redoubliez des fonctionnalités qui sont déjà présentes.

Si vous voulez vraiment utiliser find, vous n'avez pas besoin de xargs ou de fonctionnalités similaires à xargs; faites juste ceci:

find ... -print | rsync ... --files-from=-

... est "toutes les autres options que vous jugez appropriées". Cela fait que rsync lit une liste de fichiers à partir de stdin.

0voto

David Points 344

+ ne fonctionne qu'avec GNU find, et OSX a BSD find. Utilisez -print0 et xargs -0 pour le simuler.

-newermt devrait fonctionner pour les versions suffisamment récentes de GNU find. Mon ordinateur Fedora 13 (GNU find 4.4.2) le possède, mais pas mon ordinateur CentOS 5 (GNU find 4.2.27). Vous devriez pouvoir le simuler en utilisant touch pour créer un fichier avec l'heure appropriée puis en utilisant -newer sur ce fichier.

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