본문 바로가기

2023년 이전/깃과 버전 관리

깃허브Github에서 특정 파일만 다운로드 받는 법(feat. wget)

결론부터 말하자면, 깃허브의 철학은 '버전 관리'이기 때문에 저장소 안의 특정 파일, 또는 하위 디렉토리만 별도로 클론하는 기능은 없습니다. 

 

하지만 개별 파일을 저장할 수는 있는데요.

 

 우선 깃허브Github에서 repository 전체를 다운로드하는 법을 알아보겠습니다.

 

 

 

git clone <repository URL>

위와 같이 명령어를 입력하면 깃허브의 원하는 저장소(repository)를 통째로 제 로컬 저장소에 복사해서 가져오게 됩니다. 여기서 로컬이란 제가 쓰고 있는 컴퓨터 그 자체를 말합니다.

 

하지만 만약 repository를 통째로 가져오고 싶은 게 아니라 특정 파일만 가져오고 싶다면 어떻게 할까요?

 

 

위에 4개 파일만 다운로드 받고 싶은데, 고작 저 파일 4개를 다운로드 받기 위해 전체 repository를 다운로드 받는 건 별로 효율적이지 못한 것 같습니다.

 

제가 책 <Django 한그릇 뚝딱>으로 공부하면서, 저자이신 문범우 님의 깃허브에 접속했습니다.

 

위 index_init.html 파일이 있는 Django_with_PracticeExamples/project/ToDoList repository를 통째로 제 로컬로 clone할 수도 있겠지만, 저는 간단히 index_init.html 파일만 가져오고 싶습니다.

 

 

1. 깃허브 웹사이트에서 직접 파일을 다운로드 받는 법

 

파일을 클릭해 위에 형광펜으로 표시한 'Raw' 버튼을 클릭합니다.

 

 

그러면 새 탭에서 파일이 열립니다. 오른쪽 마우스 클릭해서 '다른 이름으로 저장', 원하는 폴더에 저장하면 됩니다.

 

 

 

2. Linux shell에서 wget으로 다운로드 받기

저는 윈도우 운영체제 노트북을 쓰고 있고, 예전에 리눅스 환경에서 개발을 할 일이 잠깐 있어서 Ubuntu를 사용한 적이 있습니다.

 

요새는 용량이 엄청나게 무거운 가상머신을 별도로 설치할 필요 없이 Microsoft Store에서 Ubuntu를 다운로드 받아 쉽게 쓸 수 있습니다. 저는 2022년 2월 초 기준 Ubuntu 20.04 LTS 버전을 쓰고 있습니다.

 

ubuntu 쉘을 엽니다.

 

 

그리고 cd /mnt 를 입력해서 제 노트북 로컬 디스크로 이동합니다. 

 

 

기본이지만,

1. 경로에 \ 대신 /로 입력해야 합니다.

2. 로컬 디스크를 의미하는 C는 c/ 로 시작합니다.

 

그러면 해당 경로로 이동하고, 여기에다 wget 명령어를 이용하여

wget -O <저장할 새로운 파일 이름> <가져올 파일 주소>

 

와 같이 입력합니다. 아래는 예시입니다. 해당 깃허브 주소에서 index_init.html 파일을 가져와 index_copy.html 이라는 다른 이름으로 현재 경로(~/to_do_app)에 저장합니다.

 

 

저 명령어를 입력하고 나면

 

 

저장되었다는 결과 출력문이 나오고 해당 폴더를 확인해보면

 

 

새로 생긴 걸 확인할 수 있습니다.

 

하지만 기껏 파일 하나 다운로드하겠다고 윈도우에서 매번 우분투를 열어 저렇게 실행하는 게 오히려 귀찮겠죠? 그래서 윈도우 사용자들은 가급적 1번 방법을 추천합니다.