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

Hoe behoud je de bestandskenmerken als je bestanden kopieert in Windows?

Advertisement

Op Linux kunnen we gewoon doen:

cp -pr directory

Hoe doen we dat in Windows? Kan het in Windows Verkenner? Enig GUI gereedschap suggesties?

Het zou het beste zijn als ik de NTFS permissies en aanmaak/wijziging/toegangstijd kan behouden. Op zijn minst moet ik de wijzigingsdatum voor de bestanden en de mappen behouden. De kopie van Windows Verkenner bewaart de wijzigingsdatum niet voor directories.

Advertisement
Advertisement

Antwoorden (14)

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

RoboCopy kan de mtime voor mappen bewaren met de /DCOPY:T optie, maar dit werkt alleen in Vista en nieuwer. Het kan ook ACL’s bewaren. Als alternatief kan FastCopy geconfigureerd worden om de mtimes van mappen, ACL’s en ADSen te bewaren.

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

… of u kunt gewoon een zip-archief maken (met compressiemethode ingesteld op alleen “Opslaan”), en dan de bestanden uitpakken waar u ze wilt kopiëren. De datum/tijd attributen zijn dezelfde als de originele bestanden.

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

Robocopy command line tool (komt met de meeste versies van windows) Op mijn windows 10 machine staat het op C:\Windows\System32

Van Wikipedia , het kan gebruikt worden met de volgende set opties om bestand en directory timestamps te behouden, evenals andere attributen:

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

  • /DCOPY:T behoud originele Directory’s tijdstempels (vereist versie XP026 of later)
  • /E: Kopieer mappen recursief, inclusief lege mappen
  • /R:0: probeer vergrendelde bestanden niet opnieuw (het aantal herhalingen bij mislukte kopieën is standaard 1 miljoen),

  • /COPYALL: Kopieer alle bestandsinformatie, (equivalent aan /COPY:DATSOU, waarbij

Als je alleen datum en directory tijdstempels wilt bewaren, maar geen lege subdirectories over gekopieerd wilt hebben en geen andere attributen bewaard wilt hebben, dan kun je gebruiken:
Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPY:T /S

waarbij /S geen lege_ submappen kopieert

Om de volledige syntax te zien, typ robocopy /? op een commando prompt, of kijk eens naar deze blog posts: https://ss64.com/nt/robocopy.html en https://techjourney.net/robocopy-syntax-command-line-switches-and-examples/

Een voorbeeld van een commando dat ik onlangs heb uitgevoerd:
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

Merk op dat voor het uitsluiten van 2 subdirectories de vlag /XD twee keer gebruikt moet worden. Ook gebruikt de tweede uitsluiting van een map aanhalingstekens omdat er spaties in de mapnaam staan.

Tenslotte kun je de /L vlag toevoegen om het commando te testen voordat je het echt uitvoert. Op deze manier kun je controleren of er geen mappen/bestanden worden gekopieerd (of verwijderd) die je niet wilt, en of er geen fouten in je commando zitten.

Edit: gotcha bij het kopiëren van een Root Directory (aka station) naar een Folder (niet-root directory)

Na het uitvoeren van het voorbeeld commando hierboven, was de directory niet zichtbaar! (Ook al waren show hidden files en show system files aangevinkt in Windows 10!) Het volgende commando als per https://serverfault.com/a/455029/399723 loste dit op:

attrib -h -s C:\D_backup

Als alternatief kan het toevoegen van de /A-:SH “unsets the Hidden Attribute from System files” (stelt het Verborgen Attribuut van Systeembestanden uit) voorkomen dat de map überhaupt verborgen wordt, zoals per https://serverfault.com/a/565804/399723 . Zie ook https://ss64.com/nt/robocopy.html .
Deze beschrijving werpt meer licht op deze optie als oplossing.

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

Andere software:

Je kunt ook een GUI versie van robocopy downloaden als je de commandoregel niet wilt gebruiken.

Een ander windows hulpprogramma is XCopy , hoewel het in windows 10 zit, wordt het afgeschreven. Zie de link voor gotchas.

De Wikipedia pagina voor RoboCopy (gelinkt bovenaan dit bericht) geeft een lijst van andere software die gebruikt kan worden.

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

Er is geen eenvoudige manier om dit in Windows te doen.  Er zijn verschillende programma’s die beweren dat ze de aanmaakdata van bestanden kunnen bewaren.
Hier zijn een paar programma’s die de truc zouden kunnen doen http://forum.soft32.com/windows/preserve-creation-date-Copy-ftopict361820.html (Gebroken link; niet in de Wayback Machine).

Met alleen Windows Verkenner is het niet mogelijk. Als je naar de documentatie voor CopyFile kijkt CopyFile function (winbase.h) , dan zie je dat die het onderwerp vermijdt.  Maar&nbsp CopyFile function (Windows Developer Preview) (een 2012 archief van dezelfde URL) zegt:

File times semantics

Dit artikel zou de semantiek moeten documenteren met betrekking tot de tijden voor het aanmaken/wijzigen/toegankelijk maken van bestanden.

Aanmaaktijd: als het doelbestand al bestaat, wordt de aanmaaktijd bewaard, anders wordt die ingesteld op de huidige systeemtijd.
Laatste wijzigingstijd: altijd gekopieerd van wijzigingstijd van het bronbestand.
Laatste toegangstijd: altijd ingesteld op de huidige systeemtijd.

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

Synchronize It!](http://www.grigsoft.com/wndsync.htm) 3.5 bewaart alle tijdstempels (bestanden en mappen, wijziging en creatie). Het is de enige software die ik ken onder Windows XP die dat foutloos doet, naast Robocopy, en ik heb er vele geprobeerd. Pas echter op, het kan corrupte bestanden produceren met bronbestanden die gedownload zijn met software als FlashGet of Orbit Downloader (de resulterende bestanden hebben dezelfde grootte, maar slechts 25 kB is werkelijk gekopieerd - de rest is gevuld met nullen). Ik vroeg de maker van de software of hij kon achterhalen waarom, maar hij had geen idee; ik denk dat het te maken heeft met het feit dat dergelijke software bestanden download in kleine pakketjes (bedoeld om de snelheid te optimaliseren) en dat mijn data-partitie enorm gefragmenteerd is.

Robocopy XP026 is inderdaad opgenomen in Windows Vista, maar werkt ook op Windows XP. Zoek op “Robocopy XP026”, of ik kan het bestand hierheen sturen aangezien het niet erg gemakkelijk te vinden is. Of je installeert Robocopy GUI en zoekt dan naar het robocopy.exe bestand in de System32 map, zodat je het vanaf de command line kunt gebruiken. Het bestand dat ik heb is 208kB en het versienummer is 5.1.2600.26.

Er schijnt echter een bug te zijn met de “backup mode”:

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

Robocopy versie XP027 heeft deze bug blijkbaar niet meer, maar het werkt niet op Windows XP.

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

RoboCopy zou het moeten kunnen met de COPYALL switch. Je kunt de GUI versie van Microsoft Technet halen.

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

De eenvoudigste manier voor mij, tot nu toe, is de “send to” methode. Er zijn geen externe toepassingen voor nodig. In mijn ervaring behoudt het alle originele bestandsattributen.

De methode die ik eerder gebruikte, was de compressie/zip map methode. Hoewel dit zeker langer duurt, omdat de bestanden niet alleen worden gekopieerd, maar ook verwerkt en gecomprimeerd, zowel bij het comprimeren als bij het decomprimeren.

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

Voeg een snelkoppeling toe aan de map waar je ze gekopieerd wilt hebben, en het item verschijnt in je sendto menu als je met rechts klikt op een bestand dat je wilt kopiëren.

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

FastCopy ](http://ipmsg.org/tools/fastcopy.html.en) kan dit doen en het is gratis.

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

Ik weet niet zeker welke schakelaar de bestandsdatum bijhoudt, maar dit werkt. Dan zip ik de C:tempics directory die ook de bestandsdata bijhoudt zoals eerder vermeld.

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

Het is eenvoudig om mappen en directories te verplaatsen met behoud van de aanmaakdatum. Houd gewoon Shift ingedrukt en sleep de map naar de nieuwe locatie (verplaats commando). De datum gewijzigd wordt de huidige datum, maar de datum aangemaakt blijft de oorspronkelijke datum.

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

Ik bereik dit met

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

(dit wordt echt gebruikt als een synchronisatie tool van de ene directory naar de andere mirror en de timewindow optie is om problemen te voorkomen wanneer windows systemen de klokken 1 uur verzetten voor zomertijd etc. vergeleken met Linux systemen)

in een cygwin omgeving binnen windows of een Linux virtuele machine binnen windows met windows schijven aangekoppeld (b.v. met virtualbox)

NB cygwin en virtualbox zijn beide gratis en stellen je in staat om in mindere of meerdere mate Linux functionaliteit op windows te hebben - ze vereisen beide een beetje installatie - in het bijzonder virtualbox, maar hebben veel voordelen….

Mijn eigen probleem was dat bestanden de juiste tijd hadden, maar mappen niet. rsync heeft de data op de mappen en ook de data op de bestanden aangepast.

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

xcopy werkt prima voor dit. Geef alleen de vlag /k op om attributen te kopiëren.

Syntax xcopy Bron [Bestemming][Optionele parameters]

De opdracht xcopy kan een of meer bestanden of mapstructuren van de ene locatie naar de andere kopiëren. De opdracht xcopy is opgenomen in alle versies van Windows, van Windows 95 tot Windows 8.

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

Dit commando kopieert dezelfde tijdstempel voor bestanden. Merk op dat het niet exact dezelfde tijdsaanduiding voor de mappen zelf doet. Merk ook op dat ik aanhalingstekens heb geplaatst rond zowel bron (Temp1) als bestemming (Temp2). Dit is gedaan voor het geval er spaties in de paden staan. Ik heb geen spaties, maar ik vond dat ik het moest toevoegen voor het ergste geval.

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

Om de tijdstempels ook voor mappen gelijk te houden:

robocopy /E /copy:DAT /dcopy:DAT “C:temp1” “c:temp2”

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

Eenvoudige manier om mappen te verplaatsen met behoud van aanmaakdatum en -tijd, gebruik deze hulpprogramma’s http://lantechsoft.com/data-copy.html

Nog een die de datums kan bewaren tijdens het kopiëren van bestanden. http://technocomsolutions.com/data-copy-tool.html

Advertisement

Gerelateerde vragen

3
19
10
28
5
Advertisement
Advertisement