Transfer.sh를 사용하여 Linux 터미널에서 파일을 업로드하고 공유하는 방법

오늘날, 파일 공유는 매우 간편해졌습니다. Dropbox, Google Drive, OneDrive와 같은 서비스 덕분에, 터미널을 사용하지 않고도 파일을 이곳에서 저곳으로 옮기는 것이 순식간에 이루어집니다. 하지만 터미널을 선호하는 사용자라면 SFTP를 통해 파일을 주고받을 때가 여전히 있을 것입니다. 여기, TransferSH를 소개합니다. 이 도구는 Linux 터미널에서 파일을 업로드하고 공유하는 데 특화되어 있습니다.

미리 말씀드리자면, 이 글의 마지막 부분에는 비디오 튜토리얼이 준비되어 있습니다. 궁금하신 분들은 스크롤을 내려 확인해 주세요.

Transfer.sh를 직접 사용하는 방법

Transfer.sh는 웹 인터페이스를 제공하여 브라우저에서 파일을 업로드하고 공유할 수 있습니다. 하지만 명령줄에서도 작동하므로, 터미널에서 직접 파일 공유가 가능합니다. Linux 터미널에서 Transfer.sh를 사용하려면 Curl 프로그램이 필요합니다.

Curl 설치 안내

우분투

sudo apt install curl

데비안

sudo apt-get install curl

아치 리눅스

sudo pacman -S curl

페도라

sudo dnf install curl

오픈수세

sudo zypper install curl

다른 Linux 배포판을 사용하시는 분들도 걱정 마세요. Curl은 널리 사용되는 프로그램이기 때문에, 패키지 관리자를 열고 “curl”을 검색하여 설치하면 됩니다. 만약 어떤 이유로든 찾을 수 없다면, 여기에서 다운로드할 수 있습니다.

Curl을 이용한 업로드 방법

curl을 사용하여 transfer.sh와 상호작용하려면 다소 긴 명령어가 필요합니다. 작동 방식은 다음과 같습니다.

먼저, 파일 시스템에서 업로드할 파일을 찾습니다. 터미널에서 “찾기” 명령을 사용하거나, 파일 관리자를 통해 파일 위치를 확인합니다. 예를 들어, “test.mp3” 파일을 Documents 폴더에서 업로드한다고 가정하겠습니다. 먼저 해당 폴더로 이동합니다.

cd ~/Documents

이제 test.mp3 파일이 있는 디렉토리에 있습니다. 다음으로, 파일을 업로드하기 위한 명령어를 입력합니다. 명령어의 첫 번째 부분은 다음과 같습니다.

curl --upload-file ./test.mp3

다음으로, transfer.sh에서 사용할 URL을 생성해야 합니다. 파일 이름(확장자 포함)을 활용하여 다음과 같이 작성합니다.

https://transfer.sh/test.mp3

결과적으로 최종 명령어는 다음과 같아야 합니다.

curl --upload-file ./test.mp3 https://transfer.sh/test.mp3

Curl은 파일을 Transfer.sh로 전송하고, 파일 다운로드 URL을 반환합니다. 이 URL을 통해 파일을 다운로드하거나, 공유하고 싶은 사람에게 전달할 수 있습니다.

Transfer.sh 터미널 별칭 설정

Curl을 사용하여 수동으로 업로드하는 방식은 급할 때는 유용하지만, 완벽한 방법은 아닙니다. 업로드 진행 상황을 알 수 없을뿐더러, 매번 긴 명령어를 입력해야 하는 번거로움이 있습니다. 이를 해결하기 위해, 개발자들은 Bash 별칭을 만들었습니다. 이 별칭을 설정하면, 한 단어로 파일과 폴더를 간편하게 업로드할 수 있습니다.

설정을 위해 BashRC 파일을 엽니다. 각 사용자별로 BashRC 파일을 수정해야 합니다.

nano ~/.bashrc

Nano 에디터에서 파일의 맨 아래로 이동한 다음, 다음 Transfer SH 별칭 코드를 복사하여 붙여넣습니다. 코드의 모든 부분이 제대로 복사되지 않으면 별칭이 제대로 작동하지 않을 수 있습니다.

참고: Nano에서 클립보드 내용을 붙여넣을 때는 CTRL + SHIFT + V 키를 사용합니다.

transfer() {
 # check arguments
 if [ $# -eq 0 ];
 then
 echo "No arguments specified. Usage:necho transfer /tmp/test.mdncat /tmp/test.md | transfer test.md"
 return 1
 fi

# get temporarily filename, output is written to this file show progress can be showed
 tmpfile=$( mktemp -t transferXXX )

# upload stdin or file
 file=$1

if tty -s;
 then
 basefile=$(basename "$file" | sed -e 's/[^a-zA-Z0-9._-]/-/g')

if [ ! -e $file ];
 then
 echo "File $file doesn't exists."
 return 1
 fi

if [ -d $file ];
 then
 # zip directory and transfer
 zipfile=$( mktemp -t transferXXX.zip )
 cd $(dirname $file) && zip -r -q - $(basename $file) >> $zipfile
 curl --progress-bar --upload-file "$zipfile" "https://transfer.sh/$basefile.zip" >> $tmpfile
 rm -f $zipfile
 else
 # transfer file
 curl --progress-bar --upload-file "$file" "https://transfer.sh/$basefile" >> $tmpfile
 fi
 else
 # transfer pipe
 curl --progress-bar --upload-file "-" "https://transfer.sh/$file" >> $tmpfile
 fi

# cat output link
 cat $tmpfile
 echo ""
 # cleanup
 rm -f $tmpfile
 }

긴 코드를 ~/.bashrc 파일에 추가한 후, CTRL + O 키를 눌러 저장합니다. 변경 사항을 적용하려면 컴퓨터를 재시작해야 합니다.

터미널 별칭을 이용한 업로드

TransferSH 별칭을 사용한 업로드는 curl을 수동으로 사용하는 것보다 훨씬 간단합니다. 이전 예시에서 사용했던 test.mp3 파일과 Documents 폴더를 다시 사용해 보겠습니다.

1단계: 업로드할 파일/폴더가 있는 터미널로 이동합니다.

cd ~/Documents

2단계: 업로드 명령어를 실행합니다.

transfer test.mp3

또는, 폴더를 업로드할 때는 다음과 같이 입력합니다.

transfer file_folder

3단계: 파일 업로드가 완료될 때까지 기다립니다. 진행률 표시줄이 나타나고, 업로드가 완료되면 다운로드 링크가 화면에 출력됩니다.

Curl을 이용한 다운로드

Curl은 단순한 업로드 도구가 아니라, 다운로드 기능도 제공합니다. Transfer.sh에 업로드한 파일을 다운로드하려면 다음 단계를 따르세요.

먼저, 업로드 도구에서 제공된 다운로드 링크를 복사하여 클립보드에 저장합니다. 그 다음, 다음 명령어를 실행하여 파일을 다운로드합니다.

curl https://transfer.sh/vN79X/test.zip > test.zip

다운로드 링크의 파일 이름과 동일한 이름을 “>” 뒤에 다시 입력합니다. 이것이 Curl이 PC에 저장할 파일 이름이 됩니다. 파일 이름을 변경해도 되지만, 원본 파일 이름을 유지하는 것이 좋습니다.

Wget을 이용한 다운로드

Curl이 아무리 인기 있는 도구라 할지라도, 어떤 사람들은 Curl이 복잡하다고 느껴 Wget을 사용하기도 합니다. Wget은 사용법이 매우 단순하기 때문입니다. Curl과 마찬가지로, Wget으로도 Transfer SH 링크를 손쉽게 다운로드할 수 있습니다. 방법은 다음과 같습니다.

wget https://transfer.sh/vN79X/test.zip

결론

자주 있는 일은 아니지만, 서버 작업을 하는 중에 다른 컴퓨터에서 파일에 빠르게 접근해야 할 때가 있습니다. SSH 설정이나 FTP 로그인은 번거로울 수 있습니다. 이때 TransferSH가 유용한 도구가 됩니다. 명령줄을 통해 모든 크기의 파일을 손쉽게 전송할 수 있게 해줍니다.