2011-12-18 1 views
1

Je viens de copier une tonne de données depuis une machine exécutant Windows 7 Ultimate vers un serveur exécutant Ubuntu Server LTS 10.04. J'ai utilisé l'utilitaire robocopy via PowerShell pour accommplish cette tâche, mais je n'ai pas pu trouver aucune information en ligne concernant si Robocopy vérifie l'intégrité du fichier copié une fois qu'il est copié sur le serveur. Tout d'abord, est-ce que quelqu'un sait si cela est fait de façon inhérente? Aucun commutateur ne vous permet explicitement d'ajouter une vérification à un transfert de fichier. Deuxièmement, si ce n'est pas le cas ou s'il existe une incertitude quant à savoir si oui ou non, quelle serait la méthode la plus simple pour accomplir cela pour plusieurs répertoires avec plusieurs fichiers/sous-répertoires?Vérifier les données copiées entre les partages Windows et Linux?

Merci!

Répondre

1

Le mécanisme le plus simple que je connaisse s'appuierait sur un utilitaire md5sum et Unix-like find sur votre machine Windows.

Vous pouvez générer un fichier manifeste de noms de fichiers/md5sums:

find /source -type f -exec md5sum {} \; > MD5SUM 

Copiez le fichier MD5SUM sur votre machine Linux, puis exécutez:

cd /path/to/destination 
md5sum --quiet -c MD5SUM 

Vous obtiendrez une liste de fichiers cela échoue:

$ md5sum --quiet -c /tmp/MD5SUM 
/etc/aliases: FAILED 
md5sum: WARNING: 1 of 341 computed checksums did NOT match 
+0

Connaissez-vous un tel programme pour Windows? – toolshed

+0

Je peux faire fonctionner cela de Linux à Windows, mais pas l'inverse. La plupart des utilitaires Windows semblent sortir les données avec un retour chariot, contrairement à md5sum. Crée des tonnes de problèmes lors de la création d'une somme de contrôle sur le système Windows et de la vérification sous Linux. J'ai essayé de passer l'option -b, mais apparemment vous ne pouvez le faire que lors de la création des md5sums. – toolshed

+0

Ah. Vous pouvez supprimer les retours chariot sur Linux avec 'tr -d '\' < input > output'. ('tr (1)' fait des translations de caract'eres et avec des suppressions '-d' Le' '\ r'' est la séquence d'échappement pour le caract'ere CR.) – sarnold

0

Une méthode beaucoup plus facile consiste à utiliser des unix diff et rsync

Avec diff vous pouvez comparer deux fichiers mais vous pouvez également comparer deux répertoires. Avec diff je recommanderai cette commande:

 
diff -r source/directory/ destination/directory 

forces diff -r pour analyser directorysor récursive

La deuxième option est d'utiliser rsync qui ment pour synchroniser des fichiers ou des répertoires, mais avec option -n vous peut l'utiliser aussi pour analyser les différences entre les répertoires. rsync fonctionne également même lorsque les fichiers ne sont pas sur le même hôte, cela signifie que sur un hôte distant, vous pouvez accéder à celui-ci même avec ssh.rsync Pluss est vraiment flexible avec ses options de meny avaialbe

 
rsync -avn --itemize-changes --progress --stats source/directory/ destination/directory/ 
  • option -n fait rsync faire une "marche à sec", ce qui signifie qu'il ne fait aucun changement sur le
  • -a otion inclut dans il « mode récursif, les liens symboliques, les permissions de fichiers, horodatages, paramètre propriétaire du fichier, un groupe de fichiers paratmeter
  • -v augmentation verbosité
  • --itemize-change sortie un changement global pour toutes les mises à jour

Ici vous trouverez encore plus de façons comment compear répertoires: https://askubuntu.com/questions/12473/file-and-directory-comparison-tool

Sur rsync page wikipedia vous pouvez trouver fenêtres programmes alternatifs pour rsync

Questions connexes