구글 드라이브 파일 wget, curl 하기
구글 드라이브 파일 wget, curl 하기

구글 드라이브 파일 wget, curl 하기

설명
wget, curl의 차이점, 구글드라이브 파일 wget, curl 하기
Last Updated
Last updated March 25, 2023
태그
Linux
📌
보안적인 이슈로 공유링크를 통해서 바로 받을 수 없고, "docs.google.com" 도메인으로 우회해서 다운로드 해야합니다.
 

0. 구글드라이브 파일의 FILEID가져오기

notion image
  1. 구글 드라이브 (google drive)에 들어가서 다운로드 받으려는 파일을 마우스 오른쪽 버튼을 클릭합니다.
  1. 링크가져오기
notion image
(만약 권한이 제한됨으로 되어있다면 3, 4 진행)
  1. 권한변경
  1. 링크 권한모든 사용자로 변경
  1. 링크 복사
 
복사 버튼을 얻은 링크에서 d/와 /view 사이에 있는 값이 파일 아이디(FILEID)입니다.
https://drive.google.com/file/d/10UU_Rv4dFdwg32tHyNJ9yuqtbrVo5T_9/view?usp=sharing # FILEID: 10UU_Rv4dFdwg32tHyNJ9yuqtbrVo5T_9
 

1. Wget

wget --load-cookies ~/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies ~/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id={FILEID}' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id={FILEID}" -O {FILENAME} && rm -rf ~/cookies.txt
위 명령어의 {FILEID}에 상단에서 얻었던 실제 FILEID를 대치하고, {FILENAME}에는 원하는 파일 이름을 넣어주시면 됩니다.
 

2. gdown.pl

  • 구글 드라이브 big files 다운로드를 위해서 개발자가 만드 gdown.pl 이라는 프로젝트가 있습니다. 이 것을 이용해서도 다운로드를 할 수 있습니다.
  • 기본적으로 wget을 이용하지만 대용량의 파일을 다운 받을 수 있습니다.
gdown.pl
circulosmeosUpdated Aug 30, 2023
 

3. Cur

curl 명령어도 wget과 비슷하게 쿠키 설정을 조작하여 다운로드 받으실 수 있습니다.
#!/bin/bash FILEID=$1 FILENAME=$2 curl -sc ~/cookie.txt "https://drive.google.com/uc?export=download&id=${FILEID}" > /dev/null curl -Lb ~/cookie.txt "https://drive.google.com/uc?export=download&confirm=`awk '/_warning_/ {print $NF}' ~/cookie.txt`&id=${FILEID}" -o ${FILENAME}
먼저 위의 curl 스크립트를 복사하여 실행파일을 하나 만들고, 실행권한 변경한 후 스크립트를 실행해주시면 됩니다.
chmod u+x gdown.sh #실행권한 변경
./gdown.sh {FILEID} {FILENAME} #다운로드 진행
 

wget vs curl

  • wget 과 curl 은 둘 다 웹 서버로부터 컨텐츠를 가져오는 Linux 커맨드입니다.
  • wget 과 curl 은 거의 유사하지만 조금 다른 부분이 있습니다.

공통점

  • HTTP, HTTPS, FTP 프로토콜을 통해 컨텐츠를 다운로드 하는 커맨트 라인 툴입니다.
  • HTTP POST request 를 지원합니다. (즉, 웹사이트로 데이터를 전송할 수 있습니다.)
  • HTTP 쿠키를 지원합니다.
  • 스크립트처럼 사용자 인터렉션없이 수행될 수 있도록 설계되었습니다.
  • 오픈소스이며 무료입니다.
  • 90년대에 시작한 프로젝트입니다. (wget 은 1995년, curl 은 1996년에 시작했습니다.)
  • metalink 를 지원합니다.

차이점

wget
  • 간단하고 직관적입니다.
  • 별도의 라이브러리를 지원하지 않습니다.
  • 재귀적으로 다운로드합니다.
    • 즉, 페이지에 있는 모든 내용이나 FTP 디렉터리에 있는 모든 파일들을 한 번에 그대로 복사해 옵니다.
  • curl 에 비하여 더 오래되었습니다.
  • GNU 프로젝트입니다.
curl
  • libcurl 라이브러리로 더 강력한 기능들을 추가/사용할 수 있습니다.
  • stdin 또는 stdout 의 pipe 를 이용하는 전통적인 unix 스타일의 방식도 지원합니다.
  • LDAP 이나 Samba 공유도 지원합니다.
  • 양방향입니다. (wget 은 일반 HTTP POST request 만 지원합니다.)
  • SSL 을 지원합니다.
  • gzip 압축 및 해지를 지원합니다.
  • MIT 라이센스입니다.
 

결론

  • 만약, 별다른 옵션없이 컨텐츠를 조금 더 빠르게 다운로드하려고 한다면 wget 이 적합할 것 같습니다.
  • 하지만, 조금 더 복잡한 컨텐츠를 다운로드 하려고 한다면 wget 보다는 curl 이 적합할 것 같습니다.

참고