web-dev-qa-db-fra.com

Copier des fichiers: Windows écrit-il sur disque si les fichiers sont identiques?

J'ai un répertoire avec beaucoup de livres dans PDF format (environ 2 Go de taille).

En lisant, je quitte souvent des notes et des annotations dans les fichiers. De temps en temps, je fais une sauvegarde sur un disque dur externe. Depuis que je ne me souviens pas de quels fichiers ont été modifiés depuis la dernière sauvegarde, je viens de copier et écrase le tout.

Windows vérifie-t-il si les fichiers avec le même nom sont identiques (par contenu) avant d'écraser? Sinon, comment puis-je approcher de faire exactement cela?

30
Doflaminhgo

Robocopy.

Windows ne peut pas différencier des fichiers identiques et modifiés si vous copiez à l'aide de Explorateur Windows.

Windows peut Différencier entre des fichiers identiques et modifiés si vous copiez à l'aide de Robocopy, qui est un utilitaire de copie de fichier inclus dans Windows (Vista, 7, 8.1 et 10).

Il n'est pas nécessaire d'utiliser des outils tiers.

Vous pouvez enregistrer ce script sous forme de fichier de commandes et réexécuter à nouveau lorsque vous souhaitez effectuer une sauvegarde:

robocopy /e c:\PDFs p:\PDFs

  • Chaque fois qu'un fichier PDF fichier est annoté et que les modifications sont enregistrées, ses derniers attributs modifiés et de taille changeront dans le dossier source, déclenchant un écrasement du fichier correspondant dans le dossier de destination. est invoqué.
  • Robocopy compare la taille et la dernière des attributs modifiés de tous les fichiers existants dans la source et la destination. Si l'un des attributs est différent, le fichier de destination sera écrasé. Remarque: ces valeurs n'ont besoin que de différent, pas nécessairement plus récente ou plus grande; Même si un fichier source a un plus vieux Dernière modification ou plus petit Attribut de taille, la source écrasera toujours la destination.
  • les /e (ou alors /s) Le commutateur n'est pas nécessaire si tous vos PDF sont à la racine du dossier référencé dans le script, mais si vous souhaitez inclure Subfolders Utilisez alors /s. Si vous souhaitez inclure des sous-dossiers et vide Subfuters, puis utilisez /e.
  • J'identifierais la clé de sauvegarde une lettre plus loin dans l'alphabet. Il n'ya donc aucun risque d'un autre lecteur étant attribué par inadvertance la lettre de lecteur utilisée dans le script, ce qui entraîne l'échec de la sauvegarde à un moment donné. J'ai utilisé p ici pour pdf.

Ce script simple est tout ce dont vous avez besoin.

63
Mr Ethernet

Windows ne fait pas cela. Il vous incitera cependant à écraser les fichiers avec le même nom et vous pouvez sélectionner manuellement si vous souhaitez le faire.

Pour une solution plus facile, utilisez freefileSync pour comparer les dossiers et écraser uniquement les fichiers modifiés/mis à jour (option miroir et sélectionnez File time and size In Paramètres de comparaison ).

6
xypha

En bref: non

Windows ne fait pas ça de manière simple.

Eh bien, ça fait, mais comme tout sous Windows, il est au mieux ambiguë. Vous serez invité à indiquer les conflits de noms et en fonction de votre version Windows, vous obtenez une boîte de dialogue plus ou moins compréhensible avec plusieurs options parmi lesquelles choisir avec une note supplémentaire ("Blah Blah, une taille différente, plus récente"). Vous pouvez ensuite, un par un, choisir de conserver le fichier modifié et que vous avez la possibilité d'appliquer ceci à tous les matchs "identiques".
Bien sûr, il s'agit de Windows, vous n'avez donc aucune garantie que "plus récente" signifie réellement plus récente et que vous ne savez pas ce qui est "identique" (est-ce juste la collision de noms, est-ce que c'est le changement de taille, est-ce la date de modification, ou est-ce tout?).

Alternatives

Il existe une grande variété de programmes de synchronisation de fichiers, à la fois libres et commerciaux qui sont quelque peu mieux dans la mesure où ils vérifient si un fichier a été modifié avant de l'écraser, rsync étant le traditionnel Les outils mère-de-tout-mère, mais également être un doldbid moins convivial que certaines personnes peuvent souhaiter.
Toutefois, je le fais non Recommandez-les parce qu'ils ne rendent pas fondamentalement meilleurs les choses.

Personnellement, si vous n'avez pas peur d'une petite ligne de commande (pouvait toujours faire un fichier de commandes!) Je recommanderais le excellent - ZPAQ de Matt Mahoney. Ceci est fondamentalement zip, sauf qu'il comprime beaucoup mieux, et la déduplication à la volée.

Comment ça ça mieux?

Eh bien, les outils de comparaison de la somme de contrôle sont tous agréables et cela. Surtout lorsque vous passez sur le réseau, rien ne peut battre rsync _ fonctionnant aux deux extrémités, c'est juste génial. Mais alors qu'un outil de synchronisation typique fera le travail tout simplement bien (et mieux que l'explorateur) Ce n'est pas ce que c'est le meilleur.

Écriture sur un lecteur externe, que vous comparez ou non des checksums, vous avez deux choses que vous devez faire face à:

  • Heure d'accès sur le lecteur (aboxmal)
  • Latence sur USB ou ce que vous utilisez (aller mieux mais toujours un peu abdyssmal)
  • Bande passante (en fait assez bons maintenant)
  • Drive écrit (et amplifications)
  • Drive lit

Afin de comparer les checksums, vous devez d'abord lire dans les fichiers. Arrêt complet. Ce qui signifie que pour quelques milliers de fichiers, vous payez la latence de traverser la structure de répertoire, ouvrant des fichiers sur un lien de latence élevé et en lisant plusieurs milliers de fois. De plus, les transférer dans de petites unités sur un fil de latence élevé. Eh bien, ça craint grand temps, c'est un processus très coûteux.

Ensuite, vous devez écrire les fichiers qui ont à nouveau modifié avec plusieurs opérations de haute latence, telles que l'ouverture de fichiers et écraser des données, ainsi que sur une fois un par un. Ceci sucks deux fois car non seulement est-il intrinsèquement dangereux (vous perdez le fichier écrasé si votre chat trébuche sur le câble USB) mais aussi avec moderne blague HardDridives (tels que de nombreux disques externes), il peut être extrêmement lent, jusqu'au bout du mégaoctet-par-deuxième, si vous êtes malchanceux. Cela, et la latence de milliers de petits transferts s'ajoutant.
Un outil de copie de fichier bien écrit peut être en mesure de gérer le problème de sécurité en copiant un fichier temporaire et en le renommant atmériquement par la suite (mais cela ajoute encore plus de frais généraux!).

Maintenant, un format d'archive comme ZPAQ créera une archive qui contient les checksums des fichiers déjà, ils peuvent être lus rapidement et séquentiellement à partir d'un endroit. Il est ensuite localement (signifie localement "de votre côté du câble" où vous avez probablement un disque raisonnablement rapide connecté via SATA ou M.2 ou quelque chose) compare les checksums, compresse les différences et APPEND-UNIQUEMENT = Écrit les données compressées séquentiellement à l'archive existante. Oui, cela signifie que les archives deviendront un peu au fil du temps, car vous portez toute une histoire. Hélas, le remettre, le coût est très modéré Merci à la diffusion et à la compression.

Cette méthode est plus rapide et plus sûre en même temps. Si vous tirez le câble Mid-Operation, votre sauvegarde actuelle est interrompue (évidemment!). Mais vous ne perdez pas vos données précédentes. Toutes les transactions qui passent sur des liens "lents" sont strictement séquentielles, grands transferts, qui optimise le débit.

3
Damon

XCopy/D ne copiera que des fichiers si la source est plus récente que la destination. (Xcopy/s/d pour une copie récursive)

1
Daniel Klugh