Bagaimana cara saya dengan cepat menyalin 900.000 file?

9

Saya perlu menyalin beberapa data yang mencakup 900.000 file kecil dengan total sekitar 30 gigabytes ke komputer windows. Namun, itu harus dapat disalin dan diatur dalam waktu kurang dari satu setengah jam, dan dapat memakan waktu 5+ jam untuk menyalin dari hard drive USB terutama karena jumlah file yang gila. Apakah ada cara yang lebih baik / lebih cepat untuk menangani ini, seperti melakukan semacam penyalinan blok? Terima kasih

Joe Lyga
sumber
8
Itu akan menjadi target yang sangat agresif untuk setiap salinan berbasis file dari disk tunggal, non-SSD. Hanya menghitung semua file dan berurusan dengan entri sistem file dan metadata untuk itu banyak file membutuhkan banyak waktu.
Afrazier
5
Apakah Anda dapat melepas hard drive dan menempatkannya di tujuan? ini akan menjadi kecepatan tercepat, mentransfer melalui motherboard backplane.
ITom
1
xkcd.com/949
user541686
Ingin melihat pertanyaan ini di-blog? Bantuan dengan menjawab atau memberi suara di Meta .
Tamara Wijsman

Jawaban:

7

Dengan sejumlah besar file, yang terbaik adalah membuat arsip tar sehingga Anda memiliki lebih sedikit file untuk ditangani. Jika Anda menggunakan hard drive eksternal USB 2.0, Anda harus melihat menggunakan USB 3.0, eSATA, atau menggunakan jaringan lokal cepat.

Apa sumber OS Anda? Jika kedua sistem operasi Anda adalah Linux, Anda dapat mengirimkan file melalui tar, gzip, dan ssh ke mesin target. Anda dapat menginstal cygwin di Windows untuk mendapatkan jenis fungsi ini untuk Windows juga.

Pembaruan:
" Menggunakan Tar dan SSH untuk meningkatkan Kecepatan SCP " posting menjelaskan perintah yang diperlukan untuk mengirim konten tar melalui ssh.

dabest1
sumber
tar akan tetap membaca semua file satu per satu.
Tomas Andrle
Ya, tetapi Anda hanya akan melakukannya sekali dan perintah lain seperti scp tidak akan ditunda dengan berurusan dengan file individual. Jika file dapat disimpan dalam arsip tar pada mesin target, maka Anda juga menghemat waktu untuk menulis satu file daripada banyak.
dabest1
Saya berasumsi bahwa koneksi USB adalah hambatan. Jadi mengambil gambar mentah dari drive seperti yang disarankan @arcyqwerty sepertinya solusi terbaik bagi saya. Saya ingin tahu melihat beberapa hasil aktual, mungkin saya benar-benar salah!
Tomas Andrle
1
@ Tom - Dalam pengalaman saya ketika berurusan dengan banyak file kecil, hard drive adalah hambatannya. Setiap file yang dibaca membutuhkan head-seek ke bitmap Alokasi, dan kemudian head-seek lain ke konten file yang sebenarnya. Akibatnya, hard drive menghabiskan sebagian besar waktunya mencari, dan sangat sedikit waktu untuk benar-benar membaca file.
Fake Name
2
Sebagai contoh, dengan file 1K, saya mendapatkan ~ 1-5 MBps lebih dari gigabit lan saya. Dengan file besar (masing-masing gigabytes), saya mendapatkan ~ 80-90 MBps. Ini semua tentang membaca berurutan.
Nama Palsu
8

Jika hard drive dapat dihapus dari antarmuka USB dan ke SATA / ATA, saya akan menginstalnya di komputer tujuan. Anda akan mendapatkan kecepatan transfer yang jauh lebih cepat, seperti yang dicatat orang lain. Untuk menyalin, anggap Anda menggunakan Windows, saya akan melakukan ROBOCOPY sederhana. Ini tentang secepat yang Anda benar-benar dapat harapkan, meskipun ada alternatif lain.

ROBOCOPY /E /B /MT 'source' 'destination'

Saya akan mencoba untuk menghindari mengompresi semua file ini, ada kesempatan baik waktu untuk kompres dan bergerak akan melebihi hanya memindahkan file

* Menambahkan opsi / MT untuk robocopy. Ini dapat sangat mempercepat transfer saat Anda berada di lingkungan multi-utas.

Lee Harrison
sumber
Akan /MTmembantu transfer disk tunggal lokal, atau menyebabkan meronta-ronta disk besar-besaran? Ini umum untuk menyalin saham besar di antara server, tetapi mereka sering memiliki latensi tambahan karena pergi melalui jaringan dan peningkatan IOPS dari array RAID.
Afrazier
Saya tidak bisa terlalu banyak berkomentar tentang aspek ini. Saya menggunakan robocopy untuk mencadangkan semua proyek VS saya setiap malam, meskipun harganya hanya sekitar 10GB. Hanya perlu beberapa saat karena file yang sudah ada tidak disalin. Saya memang menemukan tolok ukur Robocopy ini beberapa bulan yang lalu: demartek.com/Reports_Free/…
Lee Harrison
menurut pengalaman saya, jika adaptor USB ke SATA di drive enclosure Anda mendukung antrian perintah asli maka saya mendapatkan peningkatan kinerja yang signifikan dari sakelar / MT.
longneck
6

Anda dapat mencoba mengambil gambar seluruh folder / drive

Pada sistem Linux, Anda dapat menggunakan dduntuk mendapatkan salinan mentah dari sistem file dan menyalinnya sebagai satu file besar.

Untuk mengekstrak gambar ke Windows Anda mungkin perlu menginstal cygwin atau program yang dapat memproses ddgambar.

arcyqwerty
sumber
Itu tiketnya.
Tomas Andrle
3

Instal disk tempat file sumber berada di komputer yang Anda atur dan transfer disk ke disk. Lupakan USB. Bahkan mentransfer melalui kabel (jaringan mesin bersama-sama) akan lebih cepat daripada USB (Asumsikan USB 2.0 dan 1Gbps NIC). Jika ini adalah peristiwa yang berulang, lihat replikasi sebagai gantinya.

Paul Ackerman
sumber
3

Gunakan rsyncdengan zopsi.

-z,         --compress              compress file data during the transfer
            --compress-level=NUM    explicitly set compression level
            --skip-compress=LIST    skip compressing files with suffix in LIST

Ini akan meningkatkan kecepatan transfer melalui jaringan. Jadi kemungkinan besar tidak berguna dalam kasus Anda.

Setelah membaca lagi saya menyadari bahwa, Kita tidak boleh menggunakan bendera '-z' ketika menyalin data dari satu hard drive lokal ke yang lain, itu meningkatkan overhead. Terima kasih atas komentar dari @FakeName.

Sachin Divekar
sumber
1
rsync tidak kompres untuk transfer lokal (atau melalui LAN, saya percaya). Juga, ini tidak akan bermanfaat, karena masalah sebenarnya adalah waktu yang diperlukan untuk membaca file, tidak mengirimkannya melalui kabel (karena setiap file yang dibaca akan membutuhkan setidaknya dua operasi pencarian).
Nama Palsu
@FakeName +1 Anda benar, setelah membaca beberapa kali saya mengerti maksud Anda. Saya telah memperbarui jawaban saya.
Sachin Divekar
1

Anda dengan cepat mendekati keterbatasan hard drive Anda. Bahkan, dengan drive komoditas saat ini, tidak mungkin untuk menentukan waktu transfer Anda dengan operasi salin per file.

Dengan asumsi setiap file memerlukan 1 HD seek and seek time adalah 7 ms (yang sedikit diidealkan, secara realistis, setiap file akan membutuhkan dua kali pencarian , kecuali jika bitmap volume di-cache dalam ram), paling-paling Anda akan mengelola ~ 142 file / detik ( \ $ \ frac {1000} {7} = 142.8 ... \ $).

Dengan spesifikasi OP (30 GB, 900.000 file) yaitu ~ 33K per file (\ $ \ frac {30,000,000k} {900,000} = ~ 33,3 ... \ $. 33KB * 142 = 4,68 MBps.

Waktu minimum untuk mentransfer 30 GB pada 5 MBps, adalah ~ 1 jam, 40 menit (\ $ \ frac {30.000} {5} = = 6.000 \ $ detik. \ $ \ Frac {6.000} {60} = 100 \ $ menit, atau 1:40 jam)

Oleh karena itu, tidak mungkin untuk mencapai kecepatan yang lebih baik dari ~ 5 MBPS, dan itu dengan drive yang ideal (dan operasi pencarian lebih sedikit. Ini untuk satu pencarian per file. Secara realistis, itu akan menjadi dua). Anda dibatasi sepenuhnya oleh kinerja disk.


Satu-satunya cara untuk mendapatkan kinerja yang lebih baik maka ini adalah menyalin seluruh sistem file & partisi secara berurutan. dddapat melakukan ini di linux.

Apa yang sedang Anda coba lakukan?

Nama palsu
sumber
Apakah TeX berfungsi untuk orang lain? Tampaknya tidak menjadi render bagi saya.
Nama Palsu
0

Coba 7zip untuk mengarsipkan file menjadi satu file saja. Jika memungkinkan, gunakan WLAN dengan koneksi adhoc ke notebook.

ott--
sumber
1
atau lebih baik lagi, koneksi ethernet langsung, lebih disukai gig-e
Journeyman Geek
0

Terkait dengan jawaban @arcyqwery, Anda mungkin dapat mengompresnya, dan secara bersamaan mengubahnya menjadi satu file besar. Ini akan mempercepat proses beberapa.

Mungkin juga layak menggunakan program seperti TeraCopy , karena biasanya lebih cepat daripada kinerja salin windows default. Anda harus menguji dengan kondisi yang sama dalam kasus Anda untuk memeriksa.

soando
sumber
0

Saya punya kasus serupa. Saya mematikan Anti-virus, kecepatan salin berubah dari 3MB / s menjadi 12MB / s.

masukkan deskripsi gambar di sini

Rm558
sumber