web-dev-qa-db-fra.com

Comment préserver les attributs de fichier quand on copie des fichiers sous Windows?

Sous Linux, nous pouvons simplement faire:

cp -pr directory

Comment faire ça sous Windows? Cela peut-il être fait dans l'explorateur Windows? Des suggestions d'outils d'interface graphique?

Ce serait mieux si je pouvais conserver les autorisations NTFS et le temps de création/modification/accès. Au minimum, je dois conserver la date de modification pour les fichiers et les répertoires. La copie de Windows Explorer ne conserve pas la date de modification pour les répertoires.

39
netvope

Il n'y a pas de moyen simple de faire cela dans Windows. Il existe plusieurs programmes qui prétendent pouvoir conserver la date de création des fichiers.
Voici quelques programmes qui pourraient faire l'affaire http://forum.soft32.com/windows/preserve-creation-date-Copy-ftopict361820.html

Il n'est pas possible d'utiliser simplement l'explorateur Windows. Si vous consultez la documentation de CopyFile ( http://msdn.Microsoft.com/en-us/library/aa363851%28VS.85%29.aspx ) vous verrez qu'il est écrit:
Cet article devrait documenter la sémantique relative aux délais de création/modification/accès de fichier.

Heure de création: si le fichier cible existe déjà, son heure de création est conservée, sinon elle est définie sur l'heure système actuelle.
Heure de dernière modification: toujours copiée à partir de l'heure de modification du fichier source.
Heure du dernier accès: définissez toujours l'heure système actuelle.

5
Daisetsu

RoboCopy peut conserver mtime pour les répertoires dotés du commutateur/DCOPY: T, mais cela ne fonctionne que sous Vista et plus récent. Il peut également préserver les ACL. Alternativement, FastCopy peut être configuré pour préserver les répertoires, les ACL et ADSes .

20
afrazier

... ou vous pouvez simplement créer une archive Zip (avec la méthode de compression définie sur "Store"), puis décompresser les fichiers où vous souhaitez les copier. Les attributs de date/heure sont les mêmes que les fichiers originaux.

19
Silkworm

Outil de ligne de commande Robocopy (fourni avec la plupart des versions de Windows)
Sur mon ordinateur Windows 10, il se trouve à C:\Windows\System32

De Wikipedia , il peut être utilisé avec les options suivantes pour conserver les horodatages de fichiers et, comme ainsi que d'autres attributs:

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

  • /DCOPY:T conserve l'original les horodatages des répertoires (nécessite la version XP026 ou ultérieure)
  • /E: Copier les répertoires de manière récursive, y compris les répertoires vides
  • /R:0: ne réessayez pas les fichiers verrouillés (le nombre de réessais sur les copies ayant échoué est de 1 million par défaut),

  • /COPYALL: copier toutes les informations du fichier,
    (équivalent à /COPY:DATSOU, où

    • D = Data,
    • A = Attributs,
    • T = Horodatages de fichier ,
    • S = Security = NTFS ACL,
    • O = Informations sur le propriétaire,
    • U = Informations d'audit),

Si vous seulementvoulez conserver les horodatages de date et de répertoire, mais que ne soit pasvoulez que les sous-répertoires vides soient copiés et que ne soit pasveulent que d’autres attributs soient conservés, alors vous pouvez utiliser:
Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPY:T /S

/S copie les sous-répertoiresnon vides

Pour voir la syntaxe complète, tapez robocopy /? à l'invite de commande ou consultez les articles de blog suivants: https://ss64.com/nt/robocopy.html et https://techjourney.net/robocopy-syntax-command-line-switches-and-examples/

Un exemple de commande que j'ai récemment exécuté:
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

Notez que pour exclure 2 sous-répertoires, l'indicateur /XD doit être utilisé deux fois. En outre, 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 l’indicateur /L pour tester la commande avant de l’effectuer réellement. De cette façon, vous pouvez vérifier qu'il ne copie pas (ou ne supprime pas) les répertoires/fichiers que vous ne voulez pas et qu'il n'y a pas d'erreur dans votre commande.

Edit: obtenu lors de la copie d'un répertoire racine (lecteur) vers un dossier (répertoire non-racine)

Après avoir exécuté l'exemple de commande 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 corrigée ce:

attrib -h -s C:\D_backup

Vous pouvez également ajouter le /A-:SH "désélectionne l'attribut masqué des fichiers système" afin d'éviter que le répertoire ne soit masqué en premier lieu, comme indiqué dans https://serverfault.com/a/565804/399723 . Voir aussi https://ss64.com/nt/robocopy.html .
Cette descussion jette plus de lumière 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

Autres logiciels:

Vous pouvez également télécharger une version de robocopy à l'aide de l'interface graphique, 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 obsolète. Voir le lien pour gotchas.

La page Wikipedia de RoboCopy (liée en haut de cet article) répertorie les autres logiciels pouvant être utilisés.

5
SherylHohman

Synchronisez-le! 3.5 conserve tous les horodatages (fichiers et dossiers, modification et création). C’est le seul logiciel que je connais sous Windows XP qui fonctionne parfaitement, à côté de Robocopy, et j’en ai essayé beaucoup. Attention, il peut produire des fichiers corrompus avec des fichiers sources téléchargés à l'aide de logiciels tels que FlashGet ou Orbit Downloader (les fichiers résultants ont la même taille, mais seuls 25 Ko sont 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'avait aucune idée; Je suppose que cela a à voir avec ce logiciel qui télécharge des fichiers par petits paquets (destinés à optimiser la vitesse) et que ma partition de données est extrêmement fragmentée.

Robocopy XP026 est en effet inclus dans Windows Vista, mais fonctionne sous Windows XP. Recherchez "Robocopy XP026", ou je peux envoyer le fichier ici car ce n'est pas très facile à trouver. Vous pouvez également installer l'interface graphique de Robocopy, puis rechercher le fichier robocopy.exe dans le dossier System32 afin de l'utiliser à partir de la ligne de commande. Le fichier que j'ai est 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

La version XP027 de Robocopy n’a apparemment plus ce bogue, mais il ne fonctionne pas sous Windows XP.

4
Gabriel

RoboCopy devrait pouvoir le faire avec le commutateur COPYALL. Vous pouvez récupérer la version graphique de Microsoft Technet .

3
Russ Warren

FastCopy peut le faire et c'est gratuit.

1
yarun can

Le moyen le plus simple pour moi jusqu’à présent est la méthode "envoyer à". Il n'a pas besoin d'applications externes. D'après mon expérience, il conserve tous les attributs de fichier d'origine.

La méthode que j'ai utilisée auparavant était la méthode de compression/dossier Zip. Bien que cela prenne sûrement plus longtemps, les fichiers ne sont pas seulement copiés, mais traités et compressés, à la fois lors de la compression et de la décompression.

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

Ajoutez un raccourci au dossier où vous souhaitez les copier, et l'élément apparaîtra dans votre menu sendto lorsque vous cliquez avec le bouton droit sur un fichier que vous souhaitez copier.

1
tspmtel
xcopy *.* C:\temp\Pics /c /d /e /h /i /k /q /r /s /x /y

Je ne sais pas quel commutateur conserve la date du fichier, mais cela fonctionne. Ensuite, je compresse le répertoire C:\temp\Pics qui contient également les dates de fichier mentionnées précédemment.

1
dmaier

Je réalise cela avec

rsync -avu --modify-window = 3602 répertoire_source/répertoire_cible /

(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 pendant 1 heure pour passer à l'heure avancée, etc. par rapport aux systèmes Linux)

dans un environnement cygwin à l’intérieur de Windows ou sur une machine virtuelle Linux à l’intérieur de Windows avec des lecteurs Windows montés (par exemple, avec une boîte virtuelle)

NB cygwin et virtualbox sont tous deux gratuits et vous permettent d’avoir dans une moindre mesure les fonctionnalités de Linux sur Windows - ils nécessitent tous deux un peu de configuration - en particulier la virtualbox, mais ont de nombreux avantages ....

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

0
tom

xcopy fonctionne très bien pour cela. Spécifiez simplement le drapeau/k pour copier les attributs.

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

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

0
Chris

Cette commande copie le même horodatage pour les fichiers. Notez que l'horodatage des dossiers eux-mêmes n'est pas identique. 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. Je n'ai pas d'espace 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 identiques pour les dossiers:

copie de copie/E/copie: DAT/dcopy: DAT "C:\Temp1" "c:\Temp2"

0
pablo

Un moyen simple de déplacer des dossiers tout en préservant la date et l'heure de création, utilisez ces utilitaires

http://lantechsoft.com/data-copy.html

Un autre où il peut conserver les dates lors de la copie des fichiers.

http://technocomsolutions.com/data-copy-tool.html

0
Eric

Il est simple de déplacer des dossiers et des répertoires tout en préservant la date de création. Il suffit de tenir Shift et faites glisser le dossier vers le nouvel emplacement (commande de déplacement). La date de modification sera la date actuelle, mais la date de création conservera la date d'origine.

0
Davidus428