명령 행에서 가장 빠른 미러를 어떻게 선택합니까?


137

sources.list새로운 Ubuntu Server 설치의 명령 줄에서 가장 빠른 서버로 파일 을 업데이트하고 싶습니다 . GUI를 사용하면 이것이 쉽지만 명령 줄에서 간단한 방법이 아닌 것 같습니다.


3
정규식에서. 문자는 모든 문자를 의미합니다. .와 일치 시키려면 \로 이스케이프해야합니다. 따라서 us.archive [..]는 us \ .archive [..] 여야합니다.
Egil


2
제 경우에는 #표시를 슬래시 ( /) 로 바꿔야했습니다 . 그렇지 않으면 나는 sed: -e expression #1, char 53: unterminated s '명령을 얻었다 .
Ethan Leroy

@EthanLeroy 여기 우분투 12.04.3과 동일
로그 오프

해시가 아닌 슬래시 여야합니다.
Matt H

답변:


22
백팩 netselect-apt

    dapper (net) : netselect로 가장 빠른 데비안 미러 선택 
    [우주]
    0.3.ds1-5 : 모두
    hardy (net) : netselect로 가장 빠른 데비안 미러 선택 
    [우주]
    0.3.ds1-11 : 모두
Pakket Apt-Spy

    dapper (관리자) : 대역폭 테스트를 기반으로 sources.list 파일을 씁니다. 
    [우주]
    3.1-14 : AMD64 i386 PowerPC

보안 문제로 인해 최신 우분투에 포함되지 않은 것 같습니다 : 버그 보고서

그러나 .. 보통 을 사용 하여 특정 위치에 대한 연결 속도를 찾습니다. 홉 및 대기 시간


4
netselect-apt는 우분투 12.04에서 사용할 수없는 것 같습니다
offby1

맞습니다 : 여기를 참조하십시오 bugs.launchpad.net/ubuntu/+source/netselect/+bug/337377
Rinzwind

8
이것은 가장 많이지지되거나 더 이상 가장 좋은 대답은 아닙니다. 다음을 확인하십시오
ntg

"다음 답변"중 어떤 답변이 변경되었을 수 있습니다.
gmatht 2012 년

apt-spy는 debian 9에 갔지만 netselect-apt는 괜찮습니다
netawater

147

더 이상 검색 할 필요가 없습니다. ajmitch설명했듯이deb mirror 자동으로 최상의 미러를 선택 하는 데 사용할 수 있습니다 .

apt-get은 이제 사용자의 위치에 따라 좋은 거울을 자동으로 선택하는 '미러'방법을 지원 합니다. 퍼팅 :

deb mirror://mirrors.ubuntu.com/mirrors.txt precise main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-updates main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-backports main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-security main restricted universe multiverse

/etc/apt/sources.list파일 의 맨 위에는 지리적 위치에 따라 자동으로 미러를 선택하는 데 필요한 모든 것이 있어야합니다.

Lucid (10.04), Maverick (10.10), Natty (11.04) 및 Oneiric (11.10) 사용자는 precise적절한 이름으로 바꿀 수 있습니다 .


좋은 팁. 변경 한 후에 가장 가까운 미러를 사용 sudo apt-get update하기 전에 실행해야합니다 apt-get install.
Simon East


23
좋은 팁이지만 제 경우에는 도움이되지 않습니다. 그것은 지리적 위치에서 작동하여 로컬 서버를 제공합니다. 여기서 네트워크 시간 거리는 공간 거리가 아닌 중요한 요소입니다.
jarondl


1
@marathon은 18.04+ 이상에서 수정되었습니다
Pablo A

49

여기에 항상 좋은 오래된 사용하여 작동 한 방법 netselect과 몇 가지 grep마법 :

터미널 중독자의 "최고의 서버 찾기"해킹!

  • 데비안 웹 사이트에서dpkg -i netselect 아키텍처 다운로드 하십시오 . (약 125KB, 종속성 없음)
  • 최신 또는 최대 6 시간이 지나면 현재 위치에서 가장 빠른 Ubuntu 미러를 찾으십시오 (아래에서 설명하겠습니다. Markdown에서 제대로 분할되지 않습니다).

    sudo netselect -v -s10 -t20`wget -q -O- https://launchpad.net/ubuntu/+archivemirrors | grep -P -B8 "statusUP | statusSIX"| grep -o -P "(f | ht) tp : // [^ \"] * "`
    
  • netselect:

    1. -v 조금 더 장황하게 만듭니다-같은 IP에 다른 미러 매핑이 병합되었음을 알리는 진행률 점과 메시지를보고 싶습니다. :)
    2. -sN 마지막에 원하는 미러 수를 제어합니다 (예 : 상위 10 개 미러)
    3. -tN 각 미러의 속도 테스트 기간입니다 (기본값은 10입니다. 숫자가 높을수록 시간이 오래 걸리지 만 결과는 더 안정적입니다).
  • 이것은 인용 부호입니다 (설명을 위해 붙여 넣지 마십시오)

    wget -q -O- https://launchpad.net/ubuntu/+archivemirrors
    | grep -P -B8 "상태 (UP | SIX)"
    | grep -o -P "(f | ht) tp : // [^ \"] * "
    
    1. wgethttps://launchpad.net/ubuntu/+archivemirrors 에서 최신 미러 상태를 가져옵니다 .
    2. 첫 번째 grep는 실제 ftp / http URL을 포함하는 8 줄의 이전 컨텍스트와 함께 최신 또는 6 시간 뒤의 미러를 추출합니다.
    3. 두 번째 grep는 이러한 ftp / http URL을 추출합니다.
  • 다음은 미국 캘리포니아의 샘플 출력입니다.

    60 ftp://mirrors.se.eu.kernel.org/ubuntu/
    70 http://ubuntu.alex-vichev.info/
    77 http://ftp.citylink.co.nz/ubuntu/
    279 http://ubuntu.mirrors.tds.net/pub/ubuntu/
    294 http://mirror.umd.edu/ubuntu/
    332 http://mirrors.rit.edu/ubuntu/
    364 ftp://pf.archive.ubuntu.com/ubuntu/
    378 http://mirror.csclub.uwaterloo.ca/ubuntu/
    399 ftp://ubuntu.mirror.frontiernet.net/ubuntu/
    455 http://ubuntu.mirror.root.lu/ubuntu/
    
    • "순위"는 임의의 메트릭입니다. 낮을수록 좋습니다.
    • 왜 kernel.org 스웨덴 -EU 미러와 NZ 미러가 캘리포니아 에서 상위 3 위에 있는지 궁금하다면 , 나도 마찬가지입니다. ;-) 진실은 netselect항상 표시 할 가장 적합한 URL을 선택하지는 않습니다 다중 미러는 단일 IP에 매핑됩니다. 3 번은 nz.archive.ubuntu.com!

9
netselect는 udp 또는 icmp 대기 시간이 짧은 미러를 선택합니다. 더 많은 대역폭을 제공 할 수있는 미러를 반드시 선택할 필요는 없습니다.
Tobu

@pix 나는 당신의 편집을 승인했지만, 줄 바꿈을 대체하는 명령 대체는 아닙니다. 줄 바꿈을 제거한 이후의 필드 분할입니다. 명령 대체는 후행 줄 바꿈 만 제거합니다.
muru

25

귀하의 IP에 대해 mirrors.ubuntu.com을 기반으로 최상의 다운로드 속도로 미러를 선택하는 Oneliner.

curl -s http://mirrors.ubuntu.com/mirrors.txt | xargs -n1 -I {} sh -c 'echo `curl -r 0-102400 -s -w %{speed_download} -o /dev/null {}/ls-lR.gz` {}' |sort -g -r |head -1| awk '{ print $2  }'

2
마지막에 더 많은 옵션을 바꾸려면 : sort -gr | head -3.
Pablo A

1
현재 curl -s http://mirrors.ubuntu.com/mirrors.txt한 줄만 반환합니다. 여러 줄 http://archive.ubuntu.com/ubuntu/중에서 선택하려는 목적을 상실합니다. :-/
Stéphane Gourichon

예,이 방법은 NG입니다.
netawater

에 나열된 기본 미러 URL이 어디에 있고 미러에서 인덱스 파일의 첫 ~ 100K의 속도를 비교할 수 curl있기 때문에이 답변 의 일부가 유용 하다는 것을 알았습니다 . curl -r 0-102400 -o /dev/null [server_url]/ls-lR.gz[server_url]mirrors.txt
jamesc

이것은 전송 속도를 테스트하는데, 이는 netselect에 비해 확실히 개선 된 것입니다. 각 서버에서 10k 만 다운로드하므로 더 빠른 연결에서 안정적인 전송 속도를 나타내는 것은 아닙니다. 더 큰 다운로드로 테스트하려면 102400을 늘리십시오
Phil Miller

17

다음은 TCP 대기 시간이 가장 낮은 미러를 찾는 Python 스크립트 입니다.

이 스크립트는 또한 launchpad 에서 가져온 대역폭 및 상태 데이터를 제공하며 sources.list자동으로 또는 목록에서 선택한 미러를 사용하여 새 파일 을 생성 합니다.

머신 대기 시간이 가장 짧은 5 개의 미국 미러 중에서 선택할 수있는 사용 예 :

$ apt-select --country US -t 5 --choose


이것은 다른 방법을 시도한 완벽한 솔루션입니다. 멍청한 놈을 만들기 위해이 방법을 자세히 설명하는 게시물을 작성했습니다. blog.kmonsoor.com/…
kmonsoor

netselect최신 버전의 Ubuntu
Tek

게시물에서 사용하는 방법을 보여주십시오
Jonathan

@Jonathan이 끝났습니다. 전체 사용법은 README첫 번째 링크에 있습니다.
John B

5

mirrors.ubuntu.com/mirrors.txt에 나열된 서버를 테스트하고 가장 빠른 서버를 반환하는 간단한 핑 기반 nodejs 스크립트를 개발했습니다.

sudo npm install -g ffum
ffum

유용하다고 생각되거나 제안 사항이 있으면 알려주세요 (=


ffum이 작동하지 않습니다 : 연결 오류.
James Fu

작동하지 않습니다 : 빈 출력.
Juan Simón

git clone레포와 실행node ffum
Michael

신난다, 나를 위해 일한다! nodejs 대신 노드를 찾고있는 버그가있었습니다 ... 또한 테스트 된 각 아카이브 속도에 대한 자세한 정보를 얻는 것이 좋습니다.
tweak2

4

이것이 OP의 질문에 직접 대답하지는 않지만 Ubuntu의 데스크탑 / GUI 버전에는 가장 적합한 미러를 찾는 버튼이 있습니다. 그것은 잘 작동하는 것처럼 보였으므로 간단히 살펴 보았지만 후속 조치를 취할 시간이 없었습니다.

내가 제기하는 이유는 명령 줄 유틸리티로 만드는 것이 매우 간단하고 유용 할 것이기 때문입니다.

관심있는 사람이 있으면 테스트가 다음 위치에있는 것 같습니다.

/usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py

다시 말하지만, 그것은 내가 가진 한, 그러나 나는 누군가가 그것을 원한다면 나는 이것을 여기에 남겨 둘 것이라고 생각했습니다. 시간이 좀 더 있으면 다시 찾아올 것입니다.


18.04에서이 스크립트는 터미널에서 응용 프로그램 ( main ) 으로 호출 될 때이를 감지 하고 그 결과를 터미널에 인쇄합니다. 완료하기에 충분한 시간을 주어야합니다. $ python3 /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py>>[top 5 omitted] and the winner is: ny-mirrors.evowise.com
PatKilg

슬프게도 제대로 작동하지 않습니다. 이 스크립트는 핑이 가장 적은 5 대의 서버를 가져온 다음 ~ 1M 파일 (주로 Didist에서 Packages.gz)을 다운로드하여 대역폭으로 점수를 매 깁니다. 스크립트를 25 대의 서버로 늘리고 500M 파일을 다운로드하도록 수정하면 완전히 다른 결과를 얻습니다. 이번에는 정확한 결과입니다.
Jocelyn

2

빠른 미러를 찾는 명령

우분투 18.04 나는 실행하여 좋은 결과를 얻었다

 python /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py

"시간"(설명되지 않음)으로 구성된 미러 목록을 인쇄 한 다음 가장 높은 미러 중 하나를 사용했습니다.

자세한 내용은

나에게 거울로 설정 /etc/apt/sources.list한 다음 수행 하여 해당 명령으로 출력되는 몇 가지 주요 결과를 테스트하는 것이 유용했습니다.

time sudo apt update

해당 미러에서 패키지 목록을 다운로드하는 데 걸린 시간을 확인하십시오. 나는 세 가지 제안을 테스트했는데 모두 빠르지 만 그중 하나는 다른 두 가지보다 빠릅니다 time sudo apt update.

출력 결과는 다음과 같습니다 python /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py.

mirror: es-mirrors.evowise.com - time: 0.183778047562
mirror: it-mirrors.evowise.com - time: 0.18604683876
mirror: la-mirrors.evowise.com - time: 0.192630052567
mirror: ny-mirrors.evowise.com - time: 0.208723068237
mirror: mirrors.accretive-networks.net - time: 0.385910987854
mirror: mirror.team-cymru.org - time: 0.46785402298
mirror: mirrors.psu.ac.th - time: 1.64231991768
and the winner is: es-mirrors.evowise.com

1
슬프게도 제대로 작동하지 않습니다. 이 스크립트는 핑이 가장 적은 5 대의 서버를 가져온 다음 ~ 1M 파일 (주로 Didist에서 Packages.gz)을 다운로드하여 대역폭으로 점수를 매 깁니다. 스크립트를 25 대의 서버로 늘리고 500M 파일을 다운로드하도록 수정하면 완전히 다른 결과를 얻습니다. 이번에는 정확한 결과입니다.
Jocelyn

1

명령 행에는 apt-smart 라는 Python 도구를 사용할 수 있습니다

국가 내 순위가 매겨진 미러를 나열하는 사용 예 (자동 감지) :

$ apt-smart -l

-l, 또는 --list-mirrors, 당신은 (트래비스 CI 미국 서버에서 예제 출력) 얻을 것이다 :

---------------------------------------------------------------------------------------------------------
| Rank | Mirror URL                            | Available? | Updating? | Last updated    | Bandwidth   |
---------------------------------------------------------------------------------------------------------
|    1 | http://mirrors.gigenet.com/ubuntua... | Yes        | No        | Up to date      | 1.73 MB/s   |
|    2 | http://mirror.genesisadaptive.com/... | Yes        | No        | Up to date      | 1.68 MB/s   |
|    3 | http://ubuntu.mirrors.tds.net/pub/... | Yes        | No        | Up to date      | 1.4 MB/s    |
|    4 | http://repos.forethought.net/ubuntu   | Yes        | No        | Up to date      | 1.35 MB/s   |
|    5 | http://repo.miserver.it.umich.edu/... | Yes        | No        | Up to date      | 937.62 KB/s |
...
|   75 | http://mirror.cc.vt.edu/pub2/ubuntu   | Yes        | No        | 1 day behind    | 659.67 KB/s |
|   76 | http://mirror.atlantic.net/ubuntu     | Yes        | No        | 2 days behind   | 351.26 KB/s |
|   77 | http://mirror.lstn.net/ubuntu         | Yes        | No        | 4 days behind   | 806.81 KB/s |
|   78 | http://mirrors.usinternet.com/ubun... | Yes        | No        | 4 weeks behind  | 514.31 KB/s |
|   79 | http://mirrors.arpnetworks.com/Ubuntu | Yes        | No        | 19 weeks behind | 418.94 KB/s |
|   80 | http://mirrors.ocf.berkeley.edu/ub... | Yes        | Yes       | Up to date      | 446.07 KB/s |
---------------------------------------------------------------------------------------------------------
Full URLs which are too long to be shown in above table:
1: http://mirrors.gigenet.com/ubuntuarchive
2: http://mirror.genesisadaptive.com/ubuntu
3: http://ubuntu.mirrors.tds.net/pub/ubuntu
5: http://repo.miserver.it.umich.edu/ubuntu
...
78: http://mirrors.usinternet.com/ubuntu/archive
80: http://mirrors.ocf.berkeley.edu/ubuntu

물론 apt-smart원하는 경우 sources.list를 변경할 수도 있습니다.

$ apt-smart -a

을 사용 -a하거나 --auto-change-mirror사용 가능한 미러를 찾으려면 연결 속도 및 업데이트 상태에 따라 미러의 순위를 정하고 최상의 가용 미러를 사용하도록 /etc/apt/sources.list를 업데이트하십시오.

-c, 또는 --change-mirror MIRROR_URL/etc/apt/sources.list의 지정된 MIRROR_URL를 사용하여 업데이트합니다.

다른 도구와 비교 :

  • apt-smart 자동으로 현재 위치를 찾아 해외 여행시 국가를 지정할 필요가 없습니다.
  • apt-smartping런치 패드의 부정확 한 데이터를 사용 하고 의존하는 대신 각 미러에서 실제 HTTP 다운로드를 수행하여보다 정확한 결과 (대역폭 및 상태)를 얻고 HTTP 프록시를 지원합니다 .
  • apt-smart 대부분의 다른 도구는 오랫동안 문제를 해결하지 않습니다.

당신은 쉽게 설치할 수 있습니다 apt-smart통해 pip자세한 copy'n'paste에 대한 명령과 용도를 참조하시기 바랍니다 설치 프로젝트 읽어보기를 .


0

다음을 사용하여 미러를 자동 선택하고 deb-src를 비활성화합니다.

sudo sed -i -e 's%http://archive.ubuntu.com/ubuntu%mirror://mirrors.ubuntu.com/mirrors.txt%' -e 's/^deb-src/#deb-src/' /etc/apt/sources.list

0

유틸리티가이를 수행하려면 다음과 같은 간단한 bash 스크립트와 같은 유틸리티를 구현할 수 있습니다. pip / nodejs없이 유틸리티를 사용하려는 경우 유용 할 수 있습니다.

#!/bin/bash
if [ -z "$1" ]
then
    echo Usage:  sudo $0 http://mirrors.ubuntu.com/mirrors.txt
    echo OR consider one of...
    for mirror in `wget http://mirrors.ubuntu.com/mirrors.txt -O - 2> /dev/null`
    do 
        (
            host=`echo $mirror |sed s,.*//,,|sed s,/.*,,`
            echo -e `ping $host -c1 | grep time=|sed s,.*time=,,`:'  \t\t'$mirror
        ) &
        done
    wait
    exit 1
fi

OLD_SOURCE=`cat /etc/apt/sources.list | grep ^deb\ | head -n1 | cut -d\  -f2`

[ -e  /etc/apt/sources.list.orig ] || cp /etc/apt/sources.list /etc/apt/sources.list.orig

cp /etc/apt/sources.list /etc/apt/sources.list.tmp
sed "s,$OLD_SOURCE,$1," < /etc/apt/sources.list.tmp > /etc/apt/sources.list

0

허용 대답을 포함한 다른 답변은, 더 이상 유효하지 (우분투 11.04 및 대한 이상)가 같은 데비안 패키지를 권장하기 때문에 netselect-aptapt-spy우분투 작동하지 않습니다.

이 질문에 대한 두 가지 다른 작업 답변이 아래에 있습니다.

  1. apt-getmirror:방법을 사용하십시오

    이 방법은 IP를 기반으로 Ubuntu 서버에 가까운 미러 목록을 요청하고 그 중 하나를 선택합니다. 가장 가까운 대안, 때로는 가장 가까운 미러가 가장 빠르지 않은 작은 단점이 있습니다.

  2. netselect
    를 사용하는 명령 줄 foo netselect 도구 를 사용하여 지리적으로가 아니라 네트워크 방식으로 가장 최근에 업데이트 된 서버를 찾는 방법을 보여줍니다 . sed에서 미러를 교체하는 데 사용 합니다 sources.list.

sed거울을 교체하는 데 사용sources.list

일부 소스는 경로의 일부로 추가 폴더를 사용하므로 대체 구분 기호 구문을 사용하는 것이 좋습니다.

sudo sed -i 's%us.archive.ubuntu.com%mirrors.gigenet.com/ubuntuarchive/%' /etc/apt/sources.list

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.