I need to copy some data that includes 900,000 tiny files totaling around 30 gigabytes to a windows computer. However, it needs to be able to be copied and set up in under an hour and a half, and it can take 5+ hours to copy off a USB hard drive mostly due to the crazy amount of files. Is there a better/faster way to deal with this, such as doing some sort of block copying? Thanks
|
|
With large number of files, it is best to create tar archive so that you have less files to deal with. If you are using USB 2.0 external hard drive you should look at using USB 3.0, eSATA, or use a fast local network. What is your source OS? If both of your operating systems were Linux, you could pipe the files through tar, gzip, and ssh to the target machine. You could install cygwin on Windows to get this type of functionality for Windows as well. Update: |
|||||||||||||||
|
|
You could try taking an image of the entire folder/drive On Linux systems you can use To extract the image onto Windows you may need to install cygwin or a program that is able to process |
||||
|
|
|
If the hard drive can be removed from the USB interface and onto SATA/ATA I would install it in the destination computer. You'll get much faster transfer speeds, as others have noted. For copying, assuming your on windows I would do a simple ROBOCOPY. It's about as fast as you can really hope for, though there are other alternatives.
I'd try to avoid compressing all these files though, there is a good chance the time to compress and move would exceed simply moving the files. *Added the /MT option for robocopy. It can greatly speed up transfers when your in a multi-thread environment. |
|||||||
|
|
Install the disk where the source files reside in the computer you're setting up and transfer disk to disk. Forget USB. Even transferring over the wire (network the machines together) would be faster than USB (Assuming usb 2.0 and 1Gbps NIC). If this is a recurring event, look into replication instead. |
|||
|
|
|
Use
This will increase speed of transfer over the network. So most probably not useful in your case. After some more reading I realized that, We should not use the ā-zā flag when copying data from one local hard drive to another, it increases overhead. Thank to comment from @FakeName. |
|||||||
|
|
If you work under windows try this - http://ipmsg.org/tools/fastcopy.html.en . I have got very good experience with this. |
|||
|
|
|
You are fast approaching the limitations of your hard drive. In fact, with current commodity drives, it is impossible to meed your transfer time with a per-file copy operation. Assuming each file requires 1 HD seek and seek time is 7 ms (which is a bit idealized, realistically, each file will require two seeks, unless the volume bitmap is cached in ram), at best you will manage ~142 files/sec (\$\frac{1000}{7} = 142.8...\$). With the OP specs (30 GB, 900,000 files) that is ~33K per file (\$\frac{30,000,000k}{900,000} = ~33.3...\$. 33KB * 142 = 4.68 MBps. The minimum time to transfer 30 GB at 5 MBps, is ~1 hour, 40 minutes (\$\frac{30,000}{5}= = 6,000\$ seconds. \$ \frac{6,000}{60} = 100\$ minutes, or 1:40 hours) Therefore, it is impossible to achieve a speed better then ~5 MBPS, and that is with an ideal drive (and fewer seek operations. This is for one seek per file. Realistically, it would be two). You are limited entirely by disk performance. The only way to get performance better then this is to copy the entire file-system & partition sequentially. What are you trying to do? |
||||
|
|
|
Try 7zip to archive the files into one file only. If possible, use WLAN with a adhoc connection to a notebook. |
|||||
|
|
Related to @arcyqwery 's answer, you might be able to compress it, and simultaneously turn it into one large file. This will speed up the process some. It might also be worth it to use a program like TeraCopy, as it usually is faster than the default windows copy performance. You should test with similar circumstances in your case to check though. |
|||
|
|
