2009-08-14 19 views
1

J'utilise un utilitaire .NET pour synchroniser mon dossier local avec un emplacement FTP. Quel est le meilleur moyen de vérifier si le fichier est identique ou non? J'utilise une API client NET FTP appelée 'edtfptnet'. J'ai trouvé que même si les fichiers sont les mêmes, les tailles sont différentes pour les fichiers exe. La taille retournée par l'API est la même que la taille du fichier affiché par FileZilla. Mais il est différent de la taille obtenue par FileInfo.Length. Ces deux valeurs sont différentes de la taille indiquée dans les propriétés du fichier par l'explorateur Windows. Pourquoi cela arrive-t-il? Cela n'arrive pas pour les fichiers texte.Vérifier les doublons de fichiers pendant la synchronisation FTP

Existe-t-il un autre moyen de vérifier rapidement si le fichier est identique ou non? Les temps d'accès sont différents. L'API ne donne que Last Modified Time, ce qui est différent de la dernière heure d'écriture.

Répondre

1

Habituellement, si la taille et l'heure de modification des deux fichiers sont identiques, ils peuvent être supposés identiques. Je ne suis pas familier avec le client edtfptnet, mais pour les fichiers identiques la taille du fichier distant doit être égale à la FileInfo.Length qui devrait certainement être égale à la taille indiquée par Windows Explorer (assurez-vous de regarder "Taille" et non "Taille sur disque: "), sauf sur les systèmes d'exploitation ésotériques tels que VMS (où les fichiers sont signalés par incréments de 512, ou" blocs ", indépendamment de la taille réelle du fichier). Pour être certain que les fichiers sont identiques, vous devez calculer et comparer un hachage pour chaque fichier. Certains serveurs FTP prennent en charge la commande XCRC, qui effectue un calcul côté serveur du hachage CRC32 du fichier, que vous pouvez ensuite comparer au hachage CRC32 que vous avez calculé pour votre fichier local (par exemple, this post). Mais cela doit être fait en plus de comparer les tailles de fichiers.

Questions connexes