Le moyen le plus rapide de déplacer un grand nombre de fichiers?

8

Je dois déplacer environ 320 000 fichiers, 80 000 dossiers (seulement 100 Go) de données. Certains fichiers sont> 1 Go, mais la plupart sont <1 Ko.

J'ai jeté un coup d'œil à la méthode la plus rapide de copie de fichiers, mais je ne suis pas sûr de l'utilité de ceux-ci, mon problème ne concerne pas les vitesses de transfert pures, mais vraiment la rapidité avec laquelle Windows peut gérer l'IO de 320.000 fichiers.

Pensez-vous que je verrai des avantages de vitesse en utilisant xcopy, robocopy, teracopy ou fastcopy?

Il nous a fallu beaucoup de temps (12 heures +) pour les copier une fois (en utilisant la photocopie), et je déteste devoir recommencer. Que puis-je faire pour l'accélérer?

Le contenu se trouve sur un lecteur externe USB 2.0.

en dépit
la source

Réponses:

9

Quelque chose comme robocopy sera votre meilleur choix. Les clés USB ne peuvent pas gérer beaucoup d'E / S pour commencer.

J'ai poussé des millions de petits fichiers vers et depuis des clés USB en utilisant robocopy. Cela prend du temps, mais cela fait le travail.

mrdenny
la source
3

Comme l'a dit mrdenny, Robocopy serait le meilleur, en partie à cause de sa robustesse. Le meilleur conseil que je puisse offrir, à condition que vous soyez sûr de la propreté des fichiers à déplacer, est de vous assurer que le logiciel antivirus est désactivé pendant leur déplacement. Vous ne voulez vraiment pas les frais généraux liés à l'analyse de tous ces fichiers.

John Gardeniers
la source
1

De toute évidence, il existe un moyen plus rapide que tous ceux mentionnés ici. Plus rapide, mais moins flexible :-) Si vous avez placé les fichiers sur une partition distincte, vous pouvez copier la partition entière sur le disque cible.

Je ne connais aucun outil Windows gratuit pour le travail (un outil avec prise en charge VSS serait parfait), mais vous pouvez certainement démarrer à partir du CD Ghost, ou du CD Partition Magic, ou démarrer un CD Linux autonome. Sous Linux, vous venez de ddla partition, ou ntfsclonesi cela se trouve être une partition NTFS.

kubanczyk
la source
0

Si j'étais vous, je changerais le disque dur externe en Firewire, le transfert de vitesse est beaucoup plus rapide que USB2.

Je pense que peut-être emballer les fichiers dans un seul "tar", puis transférer les fichiers gagnerait un peu de temps. Parce que cela réduit les temps d'E / S, puisque vous ne copiez qu'un seul fichier géant, comparé à des milliers de fichiers, il consomme également moins de ressources je crois (pendant la phase de copie). Ou vous pouvez diriger le flux de goudron directement vers votre clé USB.

chutsu
la source
Oui, je sais que l'approche tar unique donnera certainement des résultats, mais je ne savais pas si la construction du fichier unique prendrait beaucoup de temps.
in.spite
Firewire est bon mais eSATA peut aussi être plus rapide.
Chopper3
0

J'ai trouvé que le moyen le plus efficace de copier un grand nombre de fichiers était de les diffuser en premier dans des fichiers ISO, puis de copier les ISO à la place. De cette façon, le disque n'est pas concerné par l'émission des milliers de commandes nécessaires pour copier des fichiers.

Bien sûr, cela dépend de la structure de votre répertoire. J'ai eu la chance d'avoir un nouveau répertoire créé à des intervalles de 4,7 Go, ce qui a facilité la création d'un VBScript pour automatiser le processus.


la source
Je ne suis pas ta logique. Pour créer l'ISO, tous ces fichiers doivent être lus et écrits dans l'ISO. Ensuite, l'ISO est lu pour extraire les fichiers et enfin les écrire dans la destination. Comment est-ce plus efficace que de les lire et de les écrire une fois?
John Gardeniers
un exemple de code dans VBSCript, C # ou un autre langage de script?
Kiquenet
@JohnGardeniers Lewis parie que le temps qu'il faut pour copier de petits fichiers sur le réseau a une charge beaucoup plus importante que le temps qu'il faut pour les mettre dans une image ISO puis transférer ce fichier. Cela dépend vraiment de votre environnement particulier, mais aussi intuitif que cela puisse paraître, il peut être plus rapide de transférer un fichier consolidé au lieu de milliers de petits fichiers.
dim
0

Vous obtiendrez presque certainement de meilleures performances globales pour la séquence de transfert si vous commencez par emballer les fichiers source dans une seule archive (tar, ou compressés en zip, etc.), puis transférez l'archive sur le réseau, puis décompressez l'archive à la destination.

N'oubliez pas que lorsque vous transférez l'archive sur le réseau, vous ferez mieux d'utiliser ftp (ou un autre protocole de transfert orienté fichier) qu'une simple copie de fichier SMB.

En utilisant un processus comme celui ci-dessus, j'ai régulièrement transféré des répertoires d'application d'environ 60 Go (avec environ 50 000 à 75 000 fichiers) entre plusieurs centres de données géographiquement séparés (États-Unis, Europe, Asie). La différence entre le transfert d'un fichier à la fois et le transfert d'une archive compressée via FTP est 10 à 40 fois plus rapide.

Rsync peut également être votre ami ici (comme c'est le cas dans de nombreux autres scénarios de transfert de fichiers).

Si vous êtes ouvert aux options commerciales, une solution de streaming binaire basée sur UDP qui peut pousser des bits sur plusieurs flux UDP pourrait vous être utile. Jetez un œil à http://www.filecatalyst.com/

user18764
la source
0

Une autre option serait d'utiliser Bittorrent en utilisant un tracker intégré ou DHT activé. Le client regrouperait tous les fichiers en blocs (utilisez 2 Mo ou plus si disponible). À la réception, vous recevrez des fichiers en gros blocs à mesure qu'ils sont écrits sur le disque dur. Cela permet de consolider vos petits fichiers en morceaux de 2 Mo et vous obtenez de meilleurs taux de transfert et

Soleil
la source