Phương pháp sao chép tập tin nhanh nhất


15

Nếu chúng tôi xây dựng thành công trên máy chủ xây dựng (CCNET), tất cả các tệp trang web ASP.NET được sao chép vào thư mục ảo (% output_dir%) để những người không phải là nhà phát triển có thể xem / kiểm tra phiên bản mới nhất của trang web. Khi kết thúc quá trình xây dựng, tập tin bat sau đây được thực thi.

rmdir /s /q "%output_dir%"
mkdir "%output_dir%"
xcopy "%source_dir%*"  "%output_dir%" /e /c /i /q /-y

Vấn đề là tôi thấy việc sao chép chậm và tự hỏi liệu có bất kỳ lệnh sao chép nào có sẵn trong Windows 2008 nhanh hơn xcopy không? Nguồn và đích nằm trên cùng một ổ đĩa. Dưới đây là các đối số chúng tôi sử dụng khi sao chép.

/e = copies directories and sub directories including empty ones.
/c = continues copying even if there are errors
/i = if destination does not exist destination is directory
/q = don't display filenames
/-y = confirm overwrite

Câu trả lời:


21

Từ quan điểm hiệu suất chỉ , xcopy hoặc robocopy sẽ cho bạn kết quả tương tự. Tôi đã thực hiện một vài thử nghiệm trên hộp Windows Vista 64 bit để thực hiện một số so sánh. Tất cả các bản sao được thực hiện giữa đĩa 7200 RPM Sata II bên trong và ổ USB 2.0 bên ngoài hoặc trên chính ổ đĩa bên trong được chỉ định. Không có thiết lập đặc biệt nào được thực hiện (tạo nên tâm trí của bạn nếu điều đó làm mất hiệu lực / xác nhận kiểm tra), chỉ để nhập lệnh vào một tệp bó để thực thi. PowerShell đã được sử dụng để nắm bắt thời gian bắt đầu và dừng. Sau một vài lần vượt qua ở đây là mức trung bình từ các công cụ tôi đã chơi với:

Tệp: 732.909.568 byte (698 MB), 1 tệp ISO được sao chép vào thư mục khác nhau trên cùng một đĩa bên trong.

copy      6 secs (ex. copy G:\folder1\* G:\folder2\)
xcopy     6 secs (ex. xcopy G:\folder1 G:\folder2 /I /E /Y /R)
robocopy  6 secs (ex. robocopy G:\folder1\ G:\folder2 /E /NP)
teracopy 28 secs (ex. TeraCopy.exe Copy G:\folder1\ G:\folder2\)
fastcopy 19 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=G:\folder2)  

Tệp: 732.909.568 byte (698 MB), 1 tệp ISO được sao chép vào đĩa USB ngoài.

copy     36 secs (ex. copy G:\folder1\* I:\folder2\)
xcopy    35 secs (ex. xcopy G:\folder1 I:\folder2 /I /E /Y /R)
robocopy 36 secs (ex. robocopy G:\folder1\ I:\folder2 /E /NP)
teracopy 36 secs (ex. TeraCopy.exe Copy G:\folder1\ I:\folder2\)
fastcopy 38 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=I:\folder2)  

Tệp: 45.039.616byte (42.9MB) 5 tệp ngẫu nhiên được sao chép vào đĩa usb ngoài

copy      6 secs (ex. copy G:\folder1\* I:\folder2\)
xcopy     5 secs (ex. xcopy G:\folder1 I:\folder2 /I /E /Y /R)
robocopy  6 secs (ex. robocopy G:\folder1\ I:\folder2 /E /NP)
teracopy 12 secs (ex. TeraCopy.exe Copy G:\folder1\ I:\folder2\)
fastcopy  6 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=I:\folder2)

Tệp / directoies: 1.087.180.800 byte (1.01 GB), 27 tệp / 8 thư mục được sao chép vào đĩa USB ngoài.

copy     *Not included in test
xcopy    57 secs (ex. xcopy G:\folder1 I:\folder2 /I /E /Y /R)
robocopy 58 secs (ex. robocopy G:\folder1\ I:\folder2 /E /NP)
teracopy 56 secs (ex. TeraCopy.exe Copy G:\folder1\ I:\folder2\)
fastcopy 60 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=I:\folder2)

Đây không phải là một thử nghiệm toàn diện, nhưng chỉ cần đưa ra một kịch bản thế giới thực nhanh chóng vào một số công cụ phổ biến hơn trong thể loại này cho thấy rằng bạn khá an toàn khi gắn bó với xcopy hoặc Robocopy (chỉ từ quan điểm hiệu suất). Ngoài ra, tùy chọn Robocopy /NP(Không tiến triển) giúp bạn tiết kiệm 0 thời gian. Điều đó không có nghĩa là bạn không thể hưởng lợi từ việc sử dụng một cái gì đó ngoài xcopy. Robocopy là một ví dụ tuyệt vời (từ Wikipedia ):

Robocopy là đáng chú ý cho các khả năng trên và ngoài các
lệnh sao chép và xcopy tích hợp trong Windows , bao gồm:

  • Khả năng chịu được sự cố ngừng mạng và tiếp tục sao chép nơi đã tắt trước đó (các tệp không đầy đủ được ghi chú bằng dấu ngày tương ứng với 1980-01-01 và chứa bản ghi khôi phục để Robocopy biết phải tiếp tục từ đâu).
  • Khả năng sao chép chính xác các thuộc tính, thông tin chủ sở hữu, luồng dữ liệu thay thế, thông tin kiểm toán và dấu thời gian theo mặc định mà không cần nhiều công tắc dòng lệnh thường bị lãng quên.
  • Khả năng sao chép chính xác các ACL NTFS, (khi / COPianceL cung cấp) và để xác nhận "quyền sao lưu" (/ B) của Windows NT để quản trị viên có thể sao chép toàn bộ thư mục, bao gồm các tệp bị từ chối đọc cho quản trị viên.
  • Kiên trì theo mặc định, với số lần thử lại tự động có thể lập trình nếu một tệp không thể được mở.
  • Chế độ "nhân bản", giữ cho cây được đồng bộ hóa bằng cách tùy ý xóa các tệp khỏi đích không còn tồn tại trong nguồn.
  • Khả năng sao chép số lượng lớn các tệp có thể làm sập tiện ích XCOPY tích hợp.
  • Một chỉ báo tiến trình trên dòng lệnh cập nhật liên tục.
  • Khả năng sao chép tên tệp và thư mục dài vượt quá 256 ký tự - tối đa 32.000 ký tự lý thuyết - không có lỗi.

5

Tôi thường sử dụng:

robocopy source dest /E /MIR

hoặc một số biến thể khác của các tham số - có lẽ /NFL /NDL /NS /NC /NPđể phù hợp với "khoảng lặng"


vâng, / NP là điều bắt buộc đối với những vụ cướp nhanh chóng
Ivo Looser

Khi bạn tạo chính xác nội dung giống như trong nguồn nhiều lần tôi sẽ sử dụng / MIR hoặc / PURGE từ lệnh Robocopy.
Ivo Looser

1

Trên thực tế, bằng cách loại bỏ Mạng, bạn thực sự hạn chế thử nghiệm của mình. Bạn có thể cân nhắc sử dụng chia sẻ mạng, đây sẽ là phần lớn công việc quản trị viên.

Ngoài ra, bạn nên sử dụng FTP và bỏ qua CIFS hoàn toàn. Eseutil.exe là một tiện ích khác mà bạn có thể sử dụng. (một tiện ích Exchange có thể được sử dụng ở nơi khác, cùng với đó là bốn dll phụ thuộc.)

Sau đó, tôi muốn xem kết quả của bạn.


1

Tôi sử dụng XCopy cho cùng một mục đích. Những gì tôi cũng đã làm là thêm một NIC khác vào máy chủ đó và đặt nó trên một mạng con riêng biệt. Sau đó thực hiện kết nối trực tiếp đến máy chủ mà tôi đang truyền tệp từ đó. Bằng cách đó, 2 máy đang di chuyển dữ liệu được sao chép qua một mạng con và người dùng vẫn có thể truy cập thông qua nic thứ hai được kết nối trực tiếp với mạng LAN.


1

Bạn nói nguồn và đích nằm trên cùng một ổ đĩa, nhưng cả hai đều trên máy chủ xây dựng?

Nếu máy chủ xây dựng là vị trí của nguồn và đích, hãy xem xét di chuyển một thư mục này hoặc thư mục khác sang ổ đĩa khác, có thể trên bộ điều khiển khác.

Nếu máy chủ xây dựng không phải là vị trí của nguồn và đích (không phải lúc nào bản dựng của máy chủ được xây dựng), hãy xem xét việc tạo một tác vụ trên máy chủ nơi chứa các thư mục nguồn và đích. Sau đó, chỉ cần khởi động nhiệm vụ đó từ xa.


1

Tôi đã phải làm một vài bản sao trong những năm qua. Chúng tôi có một máy Windows Server 2008 R2 có một thư mục với hơn 12 triệu hình ảnh bên trong (khoảng 400 GB).

Rõ ràng tôi thích nó không phải là một thư mục lớn như vậy NHƯNG:

  • XCOPY xử lý bản sao của thư mục lớn, nhưng gặp sự cố khi cố gắng di chuyển từ thư mục lớn.
  • ROBOCOPY xử lý bản sao mà không gặp sự cố và là một trải nghiệm đẹp hơn nhiều khi sao chép trong đó cung cấp các chỉ số tiến độ tốt hơn.
  • XCOPY trên các thư mục nhỏ là nhanh hơn.

Dù sao, tôi chỉ nghĩ rằng tôi muốn chia sẻ kinh nghiệm của mình với họ vì tính chất bất thường của thư mục thực sự lớn của tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.