1. Problèmes avec les caractères spéciaux dans les noms de fichiers
Y a-t-il des caractères spéciaux dans les noms de fichiers? Selon le système de fichiers sur lequel vous écrivez ces fichiers, ils peuvent ne pas vous permettre de préfixer les fichiers avec un point ( .
) par exemple.
2. Problèmes avec les temps de modification de rsync et webdav2
Je suis tombé sur ce billet de blog où un problème est décrit avec rsync
un problème d'écriture / de suivi des temps de modification des fichiers dans les répertoires box.com montés sur webdav2.
Le problème apparaît comme ceci dans le système de fichiers monté:
david@sydney:~/Pictures$ ls -l /mnt/box/bwca/08/09/IMG_3084.CR2
-rw-r--r-- 1 david david 12564061 Aug 14 16:08 /mnt/box/bwca/08/09/IMG_3084.CR2
david@sydney:~/Pictures$ ls -l 2012/08/09/IMG_3084.CR2
-rw-rw-r-- 1 david david 12564061 Aug 9 13:00 2012/08/09/IMG_3084.CR2
Ce même article a montré une solution de contournement:
$ rsync -avhP --size-only --bwlimit=64 2012/08 /mnt/box/bwca/
C'est une bonne façon d'utiliser rsync
, mais ce n'est que de comparer les fichiers en fonction de leur taille maintenant, pas de leurs sommes de contrôle.
3. Problèmes avec davfs2 (WebDAV)
Je suis tombé sur ce fil intitulé: rsync via davfs2? sur le forum WebDAV (davfs) sur sourceforge. Quelqu'un se renseignait sur une situation similaire où ils voulaient utiliser WebDAV pour monter un fournisseur de stockage en ligne et effectuer des rsync sur le stockage monté via WebDAV. C'est ce que l'un des développeurs (Werner Baumann) de WebDAV avait à dire sur ce sujet .
extrait de la réponse de Werner
davfs2 ne téléchargera que des fichiers complets. Il ne peut pas faire les choses incrémentielles que rsync fait habituellement, ce qui rend rsync très efficace.
davfs2 utilise un cache local sur le disque. Cela le rendra plus réactif et votre application devrait également en profiter. Mais il a besoin d'espace disque local pour cela. Vous devez prévoir une grande taille de cache, afin que rsync puisse faire la plupart de son travail avec le cache local, et davfs2 téléchargera la plupart des fichiers en arrière-plan, lorsque rsync sera déjà terminé.
Werner suggère ensuite ce qui suit
Cela pourrait être un inconvénient dans ce cas. Lorsque rsync lit un fichier sur l'hôte distant, il doit d'abord être transféré par davfs2 dans le cache local (s'il n'est pas déjà là). Cela pourrait rendre le processus vraiment lent et inutile. Comme rsync ne fonctionne que comme un programme de copie sophistiqué dans votre cas, il pourrait être préférable d'utiliser cp à la place. cp a une option (-u) pour copier uniquement les fichiers plus récents que ceux du système de fichiers davfs2 (= smartdrive) et il n'aurait pas besoin de lire les fichiers, mais ne lit que les métadonnées des fichiers comme mtime.
Une commande comme "cp -pru directory / to / backup dav /" pourrait faire le travail. Il ne doit pas télécharger de fichiers (comme rsync pourrait le faire, mais je ne suis pas sûr) (veuillez consulter les manuels de cp et rsync).
Des options?
Ainsi, comme @Anthon l'a suggéré, vous pouvez utiliser la cp -u
méthode pour copier les fichiers. Réalisant que cette méthode ne considère que la taille d'un fichier comme un facteur de comparaison, elle n'est donc pas complètement fiable.
Vous ne devriez pas utiliser tout ce qui ne regarde que les temps de modification lorsque l'on compare les fichiers, cp -pru
. Werner explique pourquoi dans ce fil :
extrait sur problème avec les heures de modification
Lorsque vous démontez un système de fichiers davfs2 et le montez à nouveau ultérieurement, les heures des fichiers peuvent avoir changé en fonction des informations d'heure du serveur. Des outils comme cp -pu et rsync ne peuvent pas compter sur ces heures pour déterminer quels fichiers ont changé.
Donc, étant donné les divers problèmes entourant les temps de modification, une approche utilisant uniquement des sommes de contrôle semble plus appropriée:
$ rsync -avvz --omit-dir-times --checksum --human-readable --progress <local dir> <remote dir>
--max-size=250M --exclude '.*'
. Je suis sûrcp
qu'on peut faire ça ... peut-être en canalisant la sortie de find dans cp? Mais je ne sais pas encore comment faire ça. Si nous trouvons une solution, je vais essayercp -ru
. Merci