Làm thế nào để làm cho wget nhanh hơn hoặc đa luồng?


39

Tôi vừa mới nâng cấp phần cứng máy tính của mình (cpu + bo mạch chủ + card đồ họa + bộ nhớ + đĩa cứng), do đó cần cài đặt HĐH mới. Tôi đã cố tải xuống debian-6.0.6-amd64-netinst.isobằng wgetlệnh nhưng tốc độ chậm đến mức tôi không thể chịu nổi. 4Kb/s ~ 17 Kb/s, chậm như rùa chạy hoặc thậm chí chậm hơn nếu tôi sử dụng Chrome.

Tôi đã đọc thông tin trợ giúp của wget , có vẻ như không có tùy chọn nào có thể làm cho nó nhanh hơn.

Có cách nào để làm cho wget nhanh hơn? Hoặc có thể làm cho nó tải về đa luồng ?

PS: băng thông của tôi là 4M. Tôi sử dụng lệnh này:

wget -c url  http://hammurabi.acc.umu.se/debian-cd/6.0.6/amd64/iso-cd/debian-6.0.6-amd64-netinst.iso

1
wget chỉ sử dụng kết nối của bạn. Vì vậy, nếu nó chậm, đó là kết nối của bạn với máy chủ. Có thể bạn chậm, có thể máy chủ là vậy. btw 4mbit = 0,5mb / s, chưa kể mất mát, v.v.
Dr_Bunsen

@Dr_Bunsencảm ơn lời khuyên của bạn, tôi đã thử lệnh @Gufrangợi ý : axel, so với chiều rộng wget, axelnhanh hơn bao giờ hết. Tôi nghĩ trong hầu hết các tình huống, nút cổ chai về tốc độ tải xuống của tôi là 1 . một cái gì đó chiếm băng thông (như bạn nói: Tôi chậm ). 2 . đơn luồng. 3 . Máy chủ chậm. Nhưng tôi không có gì để làm với điểm 1 & 3 .
Teifi

@Teifi Một khả năng nếu axelđa luồng hoạt động tốt hơn wget khi sử dụng cùng một máy chủ từ xa, độ trễ giữa hộp của bạn và máy chủ từ xa là rất cao. Kiểm tra ping của bạn đến máy chủ từ xa.
John Siu

Bạn đã thử HTTrack chưa? omerack.com/page/1/vi/index.html
amanthethy

Câu trả lời:


52

Tại sao không thử axel? Nó là một Trình tải xuống dựa trên dòng lệnh đầy đủ.

Cài đặt axelvà sinh sản tải xuống bởi

axel -a -n [Num_of_Thread] link1 link2 link3 ...

nơi '[Num_of_Thread]'là số lượng kết nối song song để tạo ra cho mỗi liên kết mà bạn muốn tải về.

-a chỉ hiển thị một thanh tiến độ được cải thiện.

Không giống như nhiều trình quản lý tải xuống khác, Axel tải tất cả dữ liệu trực tiếp vào tệp đích, sử dụng một luồng duy nhất. Điều này giúp tiết kiệm thời gian khi kết thúc vì chương trình không phải ghép tất cả các phần đã tải xuống.


Tôi tự hỏi nếu có một cách, có thể thông qua bí danh và trình bao bọc để sử dụng axel khi có sẵn thay vì curl hoặc wget, trừ khi có nhiều hơn một tham số cho dòng lệnh.
sorin

1
Tôi nghĩ đề xuất này không đủ để tải xuống một tệp. Xin vui lòng, sửa cho tôi nếu cần thiết. Nỗ lực của tôi ở đây askubuntu.com/q/813483/25388
Léo Léopold Hertz 준영

54

Tôi đã thử axeltheo lời giới thiệu của Gufran nhưng nó làm tôi thất vọng vô cùng. Mục tiêu của tôi là tìm một sự thay thế CLI DownThemAllvì nó tích trữ CPU và đĩa cứng và làm chậm toàn bộ hệ thống ngay cả trên Mac Pro 8 lõi. Tôi cũng muốn có một sự thay thế đa luồng cho wgetcurl, không phải là một tập lệnh nào đó chạy nhiều phiên bản này. Vì vậy, tôi đã tìm kiếm thêm và tìm thấy những gì tôi nghĩ ngay bây giờ là trình tải xuống CLI đa luồng hiện đại nhất cuối cùng có - aria2 . Vấn đề lớn mà tôi gặp phải axellà nó 'giả mạo' tải xuống các tệp qua SSL. Tôi bắt nó làm điều đó với tcdump. Nó đã được tải xuống httpsliên kết như bình thườnghttp. Điều đó thực sự làm tôi bực mình và nếu tôi không kiểm tra, tôi sẽ có cảm giác an toàn sai lầm. Tôi nghi ngờ rằng nhiều người biết về vi phạm nghiêm trọng này trong an ninh. Quay trở lại aria2, nó tiên tiến hơn bất kỳ trình tải xuống nào khác. Nó hỗ trợ các giao thức HTTP (S), FTP, BitTorrent và Metalink, là đa nền tảng và là một du kích tải xuống. Nó tối đa hóa băng thông ISP của tôi mà không tải CPU hoặc đĩa cứng, không giống như DTA. Trang người đàn ông là khổng lồ. Tôi sẽ không bao giờ sử dụng nhiều hơn một vài trong số nhiều lựa chọn của nó. Và oh, BTW, tôi đã kiểm tra hiệu suất SSL của nó tcdumpvà nó là vững chắc, không giả mạo. Tôi đã viết một kịch bản bắt chước hành vi của DTA, nếu không phải là sự thuận tiện.

Lệnh cơ bản tôi sử dụng để có băng thông tối đa là

aria2c --file-allocation=none -c -x 10 -s 10 -d "mydir" URL

-ccho phép tiếp tục tải xuống nếu nó bị gián đoạn -x 10-s 10cho phép tối đa 10 kết nối trên mỗi máy chủ và -d "mydir"xuất tệp vào thư mục mydir.

aria2files.sh:

#!/bin/bash

filename="$1" # get filename from command line argument

while read -r line
do
    if [ "$line" ] # skip blank lines
    then
        if [[ "$line" =~ (https?|ftp)\:\/\/ ]] # line contains a URL, download file
        then
            echo "URL: '$line'"
            aria2c --file-allocation=none -c -x 10 -s 10 -d "$currdir" "$line"
        else # line contains a directory name, create directory if not already present
            echo "Directory: '$line'"
            currdir="$line"
            if [ ! -d "$currdir" ]
            then
                mkdir -p "$currdir" # '-p' enables creation of nested directories in one command
            fi
        fi
    fi
done < "$filename"

Nó đọc một tệp văn bản có định dạng:

files.txt:

dierctory 1
url1
url2
…
directory 2/subdirectory/sub-subdirectory/…
url3
url4
…
…
…

Kịch bản đọc tên tệp từ dòng lệnh:

aria2files.sh files.txt

Nó tạo ra các thư mục và tải về cho họ. Nó có thể tạo các thư mục lồng nhau như trong ví dụ thứ hai.

Để biết thêm chi tiết, hãy xem tập lệnh Bash của tôi để tải các tệp từ URL đến các thư mục được chỉ định được liệt kê trong tệp văn bản .


Bạn có thể áp dụng phương pháp của mình ở đây không, Askubfox.com/q/813483/25388 Nỗ lực không thành công của tôi aria2c -x10 -s10 http://horatio.cs.nyu.edu/mit/tiny/data/tiny_images.bin.
Léo Léopold Hertz

Cảm ơn @ hmj6jmh! Đối với bản ghi trên Rapsberry Pi Model 3: wget -4 -c <https://URL/ISO_FILE>cung cấp cho tôi ~ 40 KB / giây ( 87300K .......... .......... 11% 38.7K 4h28mkhi cùng một tệp được tải xuống với giá aria2c --disable-ipv6 -c~ 250 KB / giây ( 144MiB/717MiB(20%) CN:1 DL:250KiB ETA:39m3s]).
tuk0z

1
Nếu bạn (như tôi) muốn tránh Sourceforge, aria2 là một phần của kho lưu trữ, vì vậy bạn có thể cài đặt nó vớisudo apt install aria2
Bar

Câu trả lời tốt. Đối với các trang web chỉ áp dụng HTTPS, tính năng axelthẳng không hoạt động. Có vẻ như nó đã được cập nhật để sử dụng HTTPS, nhưng phiên bản đó chưa có trong kho của tôi. aria2làm việc tốt cho tôi
WindowsEscapist
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.