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

Come conservare gli attributi dei file quando si copiano i file in Windows?

Advertisement

Su Linux, possiamo semplicemente fare:

cp -pr directory

Come farlo in Windows? Può essere fatto in Windows Explorer? Qualche suggerimento di strumento GUI?

Sarebbe il massimo se potessi mantenere i permessi NTFS e il tempo di creazione/modifica/accesso. Come minimo, ho bisogno di conservare la data di modifica dei file e delle directory. La copia di Windows Explorer non conserva la data di modifica delle directory.

Advertisement
Advertisement

Risposte (14)

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

RoboCopy può preservare l'mtime per le directory con lo switch /DCOPY:T, ma questo funziona solo in Vista e più recenti. Può anche preservare le ACL. In alternativa, FastCopy può essere configurato per preservare gli mtime delle directory, le ACL e ADSes .

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

… o puoi semplicemente fare un archivio zip (con metodo di compressione impostato solo su “Store”), e poi scompattare i file dove vuoi copiarli. Gli attributi data/ora sono gli stessi dei file originali.

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

Strumento a riga di comando Robocopy (fornito con la maggior parte delle versioni di windows) Sulla mia macchina windows 10 si trova a C:\Windows\System32

Da Wikipedia , può essere usato con il seguente set di opzioni per preservare i timestamp di file e directory, così come altri attributi:

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

  • /DCOPY:T preserve original Directories’ Timestamps (richiede la versione XP026 o successiva)
  • /E: Copia le directory in modo ricorsivo, incluse le directory vuote
  • /R:0: non riprovare i file bloccati (il numero di tentativi su copie fallite è 1 milione),

  • /COPYALL: Copia tutte le informazioni sui file, (equivalente a /COPY:DATSOU, dove

Se vuoi solo conservare i timestamp di data e directory, ma non vuoi non che vengano copiate le sottodirectory vuote e non vuoi non che vengano conservati altri attributi, puoi usare:
Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPY:T /S

dove /S copia le sottodirectory non vuote

Per vedere la sintassi completa, digitate robocopy /? al prompt dei comandi, o date un'occhiata a questi post del blog: https://ss64.com/nt/robocopy.html e https://techjourney.net/robocopy-syntax-command-line-switches-and-examples/

Un esempio di un comando che ho eseguito recentemente:
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

Notate come l'esclusione di 2 sottodirectory richiede che il flag /XD sia usato due volte. Inoltre, la seconda esclusione di directory usa le virgolette perché ci sono spazi nel nome della directory.

Infine, potete aggiungere il flag /L per testare il comando prima di farlo per davvero. In questo modo puoi verificare che non copierà (o rimuoverà) nessuna directory/file che non vuoi, e che non ci siano errori nel tuo comando.

Edit: gotcha quando si copia da una Root Directory (aka drive) a una Folder (non-root directory)

Dopo aver eseguito il comando di esempio sopra, la directory non era visibile! (Anche se show hidden files e show system files sono stati controllati in Windows 10!) Il seguente comando come da https://serverfault.com/a/455029/399723 ha risolto questo problema:

attrib -h -s C:\D_backup

In alternativa, l'aggiunta di /A-:SH “annulla l'attributo Hidden dai file di sistema”, quindi può impedire che la directory diventi nascosta in primo luogo, come da https://serverfault.com/a/565804/399723 . Vedi anche https://ss64.com/nt/robocopy.html .
Questa descussion fa più luce su questa opzione come soluzione.

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

Altri software:

In alternativa, puoi scaricare una versione GUI di robocopy se non vuoi usare la riga di comando.

Un'altra utility per windows è XCopy , sebbene sia inclusa in windows 10, è stata deprecata. Vedere il link per i problemi.

La pagina di Wikipedia per RoboCopy (collegata in cima a questo post) elenca altri software che possono essere usati.

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

Non c'è un modo semplice per farlo in Windows.  Ci sono diversi programmi che sostengono di essere in grado di conservare le date di creazione dei file.
Ecco alcuni programmi che potrebbero fare il trucco http://forum.soft32.com/windows/preserve-creation-date-Copy-ftopict361820.html (Link rotto; non nella Wayback Machine).

Usando solo Windows Explorer non è possibile. Se guardi la documentazione per CopyFile CopyFile function (winbase.h) , vedrai che evita l'argomento.  Ma&nbsp CopyFile function (Windows Developer Preview) (un archivio 2012 dello stesso URL) dice:

Semantica dei tempi dei file

Questo articolo dovrebbe documentare la semantica rispetto ai tempi di creazione/modifica/accesso dei file.

Tempo di creazione: se il file di destinazione esiste già, il suo tempo di creazione è conservato, altrimenti è impostato al tempo corrente del sistema.
Tempo di ultima modifica: sempre copiato dal tempo di modifica del file di origine.
Tempo di ultimo accesso: sempre impostato sull'ora corrente del sistema.

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

Synchronize It! ](http://www.grigsoft.com/wndsync.htm) 3.5 mantiene tutti i timestamp (file e cartelle, modifica e creazione). È l'unico software che conosco su Windows XP che lo fa senza problemi, oltre a Robocopy, e ne ho provati molti. Attenzione, però, può produrre file corrotti con file sorgente scaricati usando software come FlashGet o Orbit Downloader (i file risultanti hanno la stessa dimensione ma solo 25kB sono effettivamente copiati - il resto è pieno di zeri). Ho chiesto al creatore del software se poteva capirne il motivo, ma non ne aveva idea; credo che abbia a che fare con questo software che scarica i file in piccoli pacchetti (per ottimizzare la velocità) e la mia partizione dati è enormemente frammentata.

Robocopy XP026 è effettivamente incluso in Windows Vista, ma funziona su Windows XP. Cerca “Robocopy XP026”, o posso inviare il file qui perché non è molto facile da trovare. Oppure puoi installare Robocopy GUI e poi cercare il file robocopy.exe nella cartella System32, in modo da usarlo dalla riga di comando. Il file che ho io è di 208kB e il numero di versione è 5.1.2600.26.

Sembra però che ci sia un bug con la “modalità backup”:

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

Robocopy versione XP027 apparentemente non ha più questo bug ma non funziona su Windows XP.

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

RoboCopy dovrebbe essere in grado di farlo con l'interruttore COPYALL. Puoi prendere la versione GUI da Microsoft Technet .

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

Il modo più semplice per me, finora, è il metodo “send to”. Non ha bisogno di applicazioni esterne. Nella mia esperienza, mantiene tutti gli attributi del file originale.

Il metodo che usavo prima era quello della compressione/cartella zip. Anche se questo richiede sicuramente più tempo poiché i file non sono solo copiati, ma elaborati e compressi, sia durante la compressione che la decompressione.

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

Aggiungi un collegamento alla cartella dove vuoi che vengano copiati, e la voce apparirà nel tuo menu sendto quando clicchi con il tasto destro su un file che vuoi copiare.

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

FastCopy può farlo ed è gratuito.

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

Non sono sicuro di quale interruttore mantenga la data del file, ma questo funziona. Poi ho zippato la directory C:\temp\Pics che mantiene anche le date dei file come detto prima.

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

È semplice spostare cartelle e directory mantenendo la Creation Date. Basta tenere premuto Shift e trascinare la cartella nella nuova posizione (comando move). Date Modified sarà la data attuale, ma Date Created manterrà la data originale.

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

Ottengo questo con

rsync -avu –modify-window=3602 source\directory/ target\directory/

(questo è veramente usato come strumento di sincronizzazione da una directory ad un altro mirror e l'opzione timewindow è per prevenire problemi quando i sistemi windows spostano gli orologi di 1 ora per l'ora legale ecc. rispetto ai sistemi linux)

sia in ambiente cygwin dentro windows o una macchina virtuale linux dentro windows con unità windows montate (per esempio con virtualbox)

NB cygwin e virtualbox sono entrambi gratuiti e permettono di avere in misura minore o maggiore funzionalità linux su windows - entrambi richiedono un po’ di impostazione - in particolare virtualbox, ma hanno molti vantaggi….

Il mio problema era che i file avevano l'ora corretta ma le directory no. rsync ha sistemato le date sulle directory così come le date sui file.

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

xcopy funziona bene per questo. Basta specificare il flag /k per copiare gli attributi.

Sintassi xcopy Sorgente [Destinazione][Parametri opzionali]

Il comando xcopy può copiare uno o più file o alberi di directory da una posizione all'altra. Il comando xcopy è incluso in tutte le versioni di Windows da Windows 95 a Windows 8.

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

Questo comando copia la stessa marca temporale per i file. Nota che non fa esattamente la stessa marcatura temporale per le cartelle stesse. Notate anche che ho messo le virgolette sia intorno alla sorgente (Temp1) che alla destinazione (Temp2). Questo viene fatto nel caso in cui ci siano spazi nei percorsi. Io non ho spazi ma ho pensato di includerlo per gli scenari peggiori.

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

Per mantenere i timestamp uguali anche per le cartelle:

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

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

Un modo semplice per spostare le cartelle e preservare la data e l'ora di creazione usa queste utility http://lantechsoft.com/data-copy.html

Un'altra dove può preservare le date durante la copia dei file. http://technocomsolutions.com/data-copy-tool.html

Advertisement

Domande correlate

3
19
10
28
5
Advertisement
Advertisement