Il modo più rapido di spostare un numero elevato di file?


8

Devo spostare circa 320.000 file, 80.000 cartelle (solo 100 Gb) di dati. Alcuni file sono> 1 GB, ma la maggior parte sono <1 KB.

Ho dato un'occhiata al metodo più veloce per copiare i file ma non sono sicuro di quanto utile sarà uno di questi, il mio problema non riguarda le velocità di trasferimento puramente, ma la velocità con cui Windows può gestire l'IO di 320.000 file.

Pensi che vedrò i benefici della velocità usando xcopy, robocopy, teracopy o fastcopy?

Ci è voluto molto (12 ore +) per copiarli una volta (usando robocopy), e odio doverlo rifare. Cosa posso fare per accelerarlo?

Il materiale è su un'unità esterna USB 2.0.

Risposte:


9

Qualcosa come Robocopy sarà la tua scommessa migliore. Per cominciare, le unità USB non possono gestire molti IO.

Ho spinto milioni di piccoli file da e verso le unità USB usando robocopy. Ci vuole tempo, ma fa il lavoro.


3

Come ha detto mrdenny, Robocopy sarebbe il migliore, in parte a causa della sua robustezza. Il miglior consiglio che posso offrire, purché tu sia sicuro della pulizia dei file da spostare, è assicurarsi che il software antivirus sia disabilitato mentre vengono spostati. Non vuoi davvero il sovraccarico di avere tutti quei file sottoposti a scansione.


1

Ovviamente c'è un modo più veloce di tutti quelli menzionati qui. Più veloce, ma meno flessibile :-) Se i file sono stati inseriti in una partizione separata, è possibile copiare l'intera partizione sul disco di destinazione.

Non ho familiarità con nessuno strumento di Windows gratuito per il lavoro (strumento con supporto VSS sarebbe perfetto), ma di sicuro è possibile avviare Ghost CD o Partition Magic CD o avviare un CD autonomo Linux. In Linux hai solo ddla partizione, o ntfsclonese questa è una partizione NTFS.


0

Se fossi in te cambierei l'hard disk esterno in un Firewire, il trasferimento di velocità è molto più veloce di USB2.

Penso che forse comprimere i file in un unico "tar" e quindi trasferire i file risparmierebbe un po 'di tempo. Perché riduce i tempi di I / O, dal momento che copiando solo 1 file gigante, rispetto a migliaia di file, consuma anche meno risorse (durante la fase di copia). Oppure puoi reindirizzare il flusso tar direttamente all'unità USB.


Sì, so che l'approccio a tar singolo produrrà sicuramente risultati, ma non ero sicuro che la creazione di un singolo file avrebbe richiesto molto tempo.
entro il

Firewire è buono ma anche eSATA può essere più veloce.
Chopper3

0

Ho scoperto che il modo più efficiente per copiare un gran numero di file era di trasmetterli prima in file ISO e poi di copiare gli ISO. In questo modo il disco non è interessato dall'emissione delle migliaia di comandi richiesti per copiare i file.

Naturalmente questo dipende dalla struttura della directory. Ho avuto la fortuna di creare una nuova directory a intervalli di 4,7 GB, in modo da rendere più semplice la creazione di un VBScript per automatizzare il processo.


Non seguo la tua logica. Per creare l'ISO, tutti questi file devono essere letti e scritti nell'ISO. Quindi l'ISO viene letto per estrarre i file e infine scriverli nella destinazione. In che modo è più efficiente che leggerli e scriverli una volta?
John Gardeniers,

qualche codice di esempio in VBSCript, C # o in un altro linguaggio di script?
Kiquenet,

@JohnGardeniers Lewis sta scommettendo che il tempo necessario per copiare piccoli file attraverso la rete ha un sovraccarico molto maggiore rispetto al tempo necessario per metterli in un ISO e quindi trasferire quel file. Dipende molto dal tuo ambiente particolare, ma per quanto poco intuitivo possa sembrare, può essere più veloce trasferire uno consolidato anziché migliaia di piccoli file.
Dom

0

Quasi sicuramente sperimenterai prestazioni complessive migliori per la sequenza di trasferimento se impacchetti prima i file di origine in un singolo archivio (tar, o compresso in zip, ecc.), Quindi trasferisci l'archivio sulla rete e quindi scompatta l'archivio nel destinazione.

Si prega di non dimenticare che quando si trasferisce l'archivio sulla rete, sarà meglio usare ftp (o un altro protocollo di trasferimento orientato ai file) rispetto a una semplice copia di file SMB.

Utilizzando un processo come quello sopra, trasferisco regolarmente directory di applicazioni di circa 60 GB (con circa 50.000-75.000 file) tra più data center geograficamente separati (USA, Europa, Asia). La differenza tra il trasferimento di un file alla volta e il trasferimento di un archivio compresso su FTP è 10-40 volte più veloce.

Anche qui Rsync può essere tuo amico (come in molti altri scenari di trasferimento di file).

Se sei aperto alle opzioni commerciali, una soluzione di streaming binario basata su UDP che può trasferire bit su più flussi UDP potrebbe essere utile per te. Dai un'occhiata a http://www.filecatalyst.com/


0

Un'altra opzione sarebbe quella di utilizzare Bittorrent usando un tracker integrato o DHT attivato. Il client raggrupperebbe tutti i file in blocchi (utilizzare 2 MB o più grandi se disponibili). Alla fine della ricezione, riceverai i file in blocchi di grandi dimensioni man mano che vengono scritti sul disco rigido. Questo aiuta a consolidare i tuoi piccoli file in blocchi da 2 MB e ottieni velocità di trasferimento migliori

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.