2010-05-27 21:51:36 +0000 2010-05-27 21:51:36 +0000
43
43

Comment préserver les attributs des fichiers lorsque l'on copie des fichiers dans Windows ?

Sous Linux, on peut simplement faire :

cp -pr directory

Comment faire sous Windows ? Peut-on le faire dans l'explorateur Windows ? Des suggestions d'outils d'interface graphique ?

Le mieux serait que je puisse conserver les permissions NTFS et le temps de création/modification/accès. Au minimum, je dois conserver la date de modification des fichiers et des répertoires. La copie de l'explorateur Windows ne préserve pas la date de modification des répertoires.

Réponses (14)

23
23
23
2010-06-01 20:25:56 +0000

RoboCopy peut préserver le mtime pour les répertoires avec le commutateur /DCOPY:T, mais cela ne fonctionne que sous Vista et les versions plus récentes. Il peut également préserver les ACL. Alternativement, FastCopy peut être configuré pour préserver les mtimes des répertoires, les ACL et les ADSes .

21
21
21
2012-03-05 14:33:18 +0000

… ou vous pouvez simplement créer une archive zip (avec une méthode de compression réglée sur “Store” uniquement), puis décompresser les fichiers là où vous vouliez les copier. Les attributs de date/heure sont les mêmes que ceux des fichiers originaux.

10
10
10
2018-05-26 19:48:07 +0000

Outil en ligne de commande Robocopy (fourni avec la plupart des versions de Windows) Sur ma machine Windows 10, il est situé à C:\Windows\System32

De Wikipedia , il peut être utilisé avec l'ensemble d'options suivantes pour préserver les horodatages des fichiers et répertoires, ainsi que d'autres attributs :

Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPYALL /E /R:0

  • /DCOPY:T préserver les horodatages originaux Répertoires (nécessite la version XP026 ou ultérieure)
  • /E : Copie récursive des répertoires, y compris les répertoires vides
  • /R:0 : ne pas réessayer les fichiers verrouillés (le nombre de tentatives sur les copies échouées est de 1 million par défaut),

  • /COPYALL : Copiez toutes les informations des fichiers, (équivalent à /COPY:DATSOU, où

Si vous seulement voulez préserver la date et l'horodatage des répertoires, mais que vous ne voulez pas que les sous-répertoires vides soient copiés et que vous ne voulez pas que les autres attributs soient préservés, alors vous pouvez utiliser :
Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPY:T /S

/S copie les sous-répertoires non vides

Pour voir la syntaxe complète, tapez robocopy /? à l'invite de commande, ou jetez un coup d'œil à ces articles de blog : https://ss64.com/nt/robocopy.html an https://techjourney.net/robocopy-syntax-command-line-switches-and-examples/

Un exemple de commande que j'ai récemment exécutée :
Robocopy D:\ C:\D_backup /DCOPY:T /COPYALL /E /R:0 /ZB /ETA /TEE /V /FP /XD D:\$RECYCLE.BIN /XD "D:\System Volume Information" /LOG:C:\D_backup_robocopy.LOG /MIR

Remarquez comment l'exclusion de 2 sous-répertoires nécessite d'utiliser deux fois le drapeau /XD. De plus, la deuxième exclusion de répertoire utilise des guillemets car il y a des espaces dans le nom du répertoire.

Enfin, vous pouvez ajouter le drapeau /L pour tester la commande avant de la faire pour de vrai. De cette façon, vous pouvez vérifier qu'elle ne copiera pas (ou ne supprimera pas) les répertoires/fichiers que vous ne voulez pas, et qu'il n'y a pas d'erreurs dans votre commande.

Edit : gotcha when copying from a Root Directory (aka drive) to a Folder (non-root directory)

Après avoir exécuté la commande d'exemple ci-dessus, le répertoire n'était pas visible ! (Même si show hidden files et show system files ont été vérifiés dans Windows 10 !) La commande suivante selon https://serverfault.com/a/455029/399723 a corrigé cela :

attrib -h -s C:\D_backup

Alternativement, l'ajout de la commande /A-:SH “désactive l'attribut caché des fichiers système”, ce qui peut empêcher le répertoire d'être caché en premier lieu, conformément à la commande https://serverfault.com/a/565804/399723 . Voir aussi https://ss64.com/nt/robocopy.html .
Cette description éclaire davantage sur cette option en tant que solution.

Robocopy D:\ C:\D_backup /A-:SH /DCOPY:T /COPYALL /E /R:0 /ZB /ETA /TEE /V /FP /XD D:\$RECYCLE.BIN /XD "D:\System Volume Information" /LOG:C:\D_backup_robocopy.LOG /MIR

Autre logiciel :

Alternativement, vous pouvez télécharger une version GUI de robocopy si vous ne souhaitez pas utiliser la ligne de commande.

Un autre utilitaire Windows est XCopy , bien qu'il soit inclus dans Windows 10, il est déprécié. Voir le lien pour gotchas.

La page Wikipedia pour RoboCopy (lien en haut de ce billet) énumère d'autres logiciels qui peuvent être utilisés.

6
6
6
2010-05-27 23:04:39 +0000

Il n'y a pas de moyen simple de le faire dans Windows.&nbsp ; Il existe plusieurs programmes qui prétendent pouvoir préserver les dates de création des fichiers.
Voici quelques programmes qui pourraient faire l'affaire http://forum.soft32.com/windows/preserve-creation-date-Copy-ftopict361820.html (Lien brisé ; pas dans la machine à remonter le temps).

En utilisant uniquement l'explorateur Windows, ce n'est pas possible. Si vous regardez la documentation de CopyFile Fonction CopyFile (winbase.h) , vous verrez qu'il évite le sujet .&nbsp ; Mais&nbsp Fonction CopyFile (Windows Developer Preview) (a 2012 archive de la même URL) dit :

Sémantique des temps de fichier

Cet article devrait documenter la sémantique en ce qui concerne la création/modification/temps d'accès aux fichiers.

Temps de création : si le fichier cible existe déjà, son temps de création est préservé, sinon il est is réglé sur l'heure système actuelle.
Heure de dernière modification : toujours copié à partir de l'heure de modification du fichier source.
Last Access time : toujours réglé sur l'heure système actuelle.

4
4
4
2011-07-26 15:54:51 +0000

Synchronize It ! 3.5 conserve tous les horodatages (fichiers et dossiers, modification et création). C'est le seul logiciel que je connaisse sur Windows XP qui fait cela parfaitement, à part Robocopy, et j'en ai essayé beaucoup. Attention, cependant, il peut produire des fichiers corrompus avec des fichiers sources téléchargés à l'aide de logiciels comme FlashGet ou Orbit Downloader (les fichiers résultants ont la même taille mais seuls 25 Ko sont réellement copiés - le reste est rempli de zéros). J'ai demandé au créateur du logiciel s'il pouvait comprendre pourquoi, mais il n'en avait aucune idée ; je suppose que cela a à voir avec le fait que ces logiciels téléchargent les fichiers par petits paquets (destinés à optimiser la vitesse) et que ma partition de données est extrêmement fragmentée.

Robocopy XP026 est bien inclus dans Windows Vista, mais fonctionne sous Windows XP. Cherchez “Robocopy XP026”, ou je peux envoyer le fichier ici car il n'est pas très facile à trouver. Ou vous pouvez installer l'interface graphique de Robocopy et ensuite rechercher le fichier robocopy.exe dans le dossier System32, de manière à l'utiliser en ligne de commande. Le fichier que j'ai est de 208kB et le numéro de version est 5.1.2600.26.

Il semble y avoir un bug avec le “mode de sauvegarde”, cependant :

http://msmvps.com/blogs/martinzugec/archive/2008/03/03/ugly-bug-in-robocopy-ignoring-security-on-file-level.aspx

Robocopy version XP027 n'a apparemment plus ce bug mais il ne fonctionne pas sous Windows XP.

3
3
3
2010-06-01 18:32:19 +0000

RoboCopy devrait pouvoir le faire avec l'interrupteur COPYALL. Vous pouvez obtenir la version GUI à partir de Microsoft Technet .

1
1
1
2014-10-19 01:19:44 +0000

Pour moi, la méthode la plus simple jusqu'à présent est celle de l’“envoi à”. Elle ne nécessite aucune application externe. D'après mon expérience, elle conserve tous les attributs du fichier d'origine.

La méthode que j'utilisais auparavant, était la méthode de compression/dossier zip. Mais cela va certainement prendre plus de temps, car les fichiers ne sont pas seulement copiés, mais traités et compressés, tant lors de la compression que de la décompression.

%appdata%\Microsoft\Windows\SendTo ou. C:\Users\ _______ \AppData\Roaming\Microsoft\Windows\SendTo

Ajoutez un raccourci vers le dossier où vous voulez les copier, et l'élément apparaîtra dans votre menu sendto lorsque vous cliquerez avec le bouton droit de la souris sur un fichier que vous voulez copier.

1
1
1
2012-12-06 02:51:42 +0000

FastCopy peut le faire et c'est gratuit.

1
1
1
2013-08-19 19:37:45 +0000
xcopy *.* C:\temp\Pics /c /d /e /h /i /k /q /r /s /x /y

Je ne sais pas quel commutateur maintient la date du fichier mais cela fonctionne. Ensuite, je zippe le répertoire C:\temp\Pics qui conserve également les dates des fichiers comme mentionné précédemment.

0
0
0
2012-10-14 14:50:02 +0000

Il est simple de déplacer les dossiers et les répertoires tout en conservant la date de création. Il suffit de maintenir la touche Maj et de faire glisser le dossier vers le nouvel emplacement (commande Déplacer). La date de modification sera la date actuelle mais la date de création conservera la date d'origine.

0
0
0
2014-05-02 08:34:44 +0000

J'y parviens avec

rsync -avu –modify-window=3602 source_directory/ target_directory/

(ceci est vraiment utilisé comme outil de synchronisation d'un répertoire à un autre miroir et l'option timewindow permet d'éviter les problèmes lorsque les systèmes windows déplacent les horloges d'une heure pour l'heure d'été, etc. par rapport aux systèmes linux)

dans un environnement cygwin à l'intérieur de windows ou une machine virtuelle linux à l'intérieur de windows avec des lecteurs de windows montés (par exemple avec virtualbox)

NB cygwin et virtualbox sont tous deux gratuits et vous permettent d'avoir plus ou moins de fonctionnalités linux sur windows - ils nécessitent tous deux un peu de configuration - en particulier virtualbox, mais ont de nombreux avantages….

Mon propre problème était que les fichiers ont l'heure correcte mais pas les répertoires. rsync a trié les dates sur les répertoires ainsi que les dates sur les fichiers.

0
0
0
2014-01-01 07:59:10 +0000

xcopy fonctionne bien pour cela. Il suffit de spécifier le drapeau /k pour copier les attributs.

Syntaxe xcopy Source [Destination] [Paramètres optionnels]

La commande xcopy peut copier un ou plusieurs fichiers ou arborescences de répertoires d'un endroit à un autre. La commande xcopy est incluse dans toutes les versions de Windows, de Windows 95 à Windows 8.

0
0
0
2014-08-12 14:57:58 +0000

Cette commande copie le même horodatage pour les fichiers. Notez qu'elle ne fait pas exactement le même horodatage pour les dossiers eux-mêmes. Notez également que j'ai placé des guillemets autour de la source (Temp1) et de la destination (Temp2). Ceci est fait au cas où il y aurait des espaces dans les chemins d'accès. Je n'ai pas d'espaces mais j'ai pensé que je devrais l'inclure pour les pires scénarios.

robocopy /E /copy:DAT "C:\Temp1" "c:\Temp2"

Pour que les horodatages restent les mêmes pour les dossiers également :

robocopy /E /copy:DAT /dcopy:DAT “C:\Temp1” “c:\Temp2”

0
0
0
2013-02-11 13:33:03 +0000

Une façon simple de déplacer des dossiers et de préserver la date et l'heure de création consiste à utiliser ces utilitaires http://lantechsoft.com/data-copy.html

Un autre où il peut préserver les dates tout en copiant des fichiers. http://technocomsolutions.com/data-copy-tool.html