dropship_

파일이나 폴더를 압축해서 Dropbox에 올리고, 전송 가능한 다운로드 링크를 만들어 주는 크로스 플랫폼 CLI 도구.

받는 쪽은 Dropbox 계정이나 토큰 없이 링크만으로 다운로드할 수 있습니다. Go 표준 라이브러리만 사용하므로 외부 의존성이 없고, 빌드 결과물은 런타임 설치가 필요 없는 단일 실행파일입니다.

i

Dropbox의 소비자용 "Transfer" 기능 자체에는 공개 API가 없습니다. 이 도구는 동일한 목적(압축 → 업로드 → 만료/비밀번호가 가능한 공유 다운로드 링크)을 공개 Sharing API로 구현합니다.

01 Install

설치

설치하면 어디서든 경로 없이 dropship 명령으로 실행할 수 있습니다.

Download

dropship 패키지 받기

빌드된 6개 플랫폼 바이너리 + 소스 + 설치 스크립트가 담긴 zip을 바로 받습니다.

curl
curl -L -o "dropship.zip" "https://www.dropbox.com/scl/fi/d27jo7oehwt9zmerw6xd1/dropship.zip?rlkey=z203lclhjavoeloiu679sbeth&dl=1"
브라우저로 다운로드 ↓

방법 A — 설치 스크립트권장

OS/아키텍처를 자동 감지해 알맞은 바이너리를 PATH에 dropship으로 등록합니다.

macOS / Linux
# bash 로 실행하면 권한 비트(+x)가 없어도 동작합니다
bash install.sh
# 위치를 바꾸려면(관리자 권한 없이): PREFIX=~/.local/bin bash install.sh
Windows · PowerShell
powershell -ExecutionPolicy Bypass -File .\install.ps1
# 새 터미널을 열면 dropship 이 인식됩니다.
!

./install.sh 실행 시 permission denied 가 나오면 zip을 풀 때 실행 권한(+x)이 빠진 것입니다. 위처럼 bash install.sh 로 실행하거나, chmod +x install.sh./install.sh 하세요. sudo su 로 root가 될 필요는 없습니다 — 스크립트가 필요할 때만 자동으로 sudo를 씁니다.

방법 B — Go로 직접 설치

Go 1.22+ 가 있으면 한 줄로 빌드+설치됩니다. 결과물은 $(go env GOPATH)/bin(보통 ~/go/bin)에 들어가며, 이 경로가 PATH에 있으면 바로 실행됩니다.

bash
go install .          # 이 폴더에서

방법 C — 수동 복사

dist/에서 본인 OS용 바이너리를 골라 PATH 상의 디렉터리에 복사하면 됩니다.

bash
# 예: macOS(Apple Silicon)
sudo install -m 755 dist/dropship-darwin-arm64 /usr/local/bin/dropship
OS파일
Windows (Intel/AMD)dropship-windows-amd64.exe
Windows (ARM)dropship-windows-arm64.exe
Linux (Intel/AMD)dropship-linux-amd64
Linux (ARM · 라즈베리파이 등)dropship-linux-arm64
macOS (Intel)dropship-darwin-amd64
macOS (Apple Silicon)dropship-darwin-arm64

직접 빌드

bash
go build -o dropship .        # 현재 OS용 단일 바이너리
./build.sh                    # 6개 플랫폼 전부 (dist/ 에 생성)

02 Token

Dropbox 토큰 발급 (send 사용 시)

업로드에는 액세스 토큰이 필요합니다 (다운로드는 불필요).

  1. developers/apps 에서 Create app
  2. Scoped access → 권한(Permissions) 탭에서 다음을 체크
    • files.content.write
    • sharing.write
    • sharing.read (기존 링크 조회용)
  3. Settings 탭에서 Generated access token 발급

발급한 토큰은 아래 중 한 방법으로 전달합니다. 도구가 찾는 우선순위는 --token 플래그 → DROPBOX_TOKEN 환경변수 → 토큰 파일 순서입니다.

!

셸마다 환경변수 설정 문법이 다릅니다. export는 Linux/macOS(bash/zsh) 문법이라 Windows PowerShell에서 쓰면 export: ... not recognized 오류가 납니다.

토큰 파일 방식권장 · 한 번만

셸 종류와 무관하게 한 번 저장해두면 이후로는 아무것도 붙이지 않고 dropship send … 만 하면 됩니다.

Linux / macOS
mkdir -p ~/.config/dropship
echo 'sl.xxxxx...' > ~/.config/dropship/token
chmod 600 ~/.config/dropship/token        # 권한 제한(선택)
Windows · PowerShell
New-Item -ItemType Directory -Force -Path "$HOME\.config\dropship" | Out-Null
"sl.xxxxx..." | Set-Content -Path "$HOME\.config\dropship\token" -Encoding ascii
i

-Encoding ascii 는 일부 PowerShell이 파일 앞에 붙이는 BOM(보이지 않는 문자)으로 토큰이 깨지는 것을 막기 위함입니다.

환경변수 방식

Linux / macOS · bash/zsh
export DROPBOX_TOKEN="sl.xxxxx..."                       # 현재 세션만
echo 'export DROPBOX_TOKEN="sl.xxxxx..."' >> ~/.bashrc    # 영구 (zsh는 ~/.zshrc)
Windows · PowerShell
$env:DROPBOX_TOKEN = "sl.xxxxx..."                                           # 현재 세션만
[Environment]::SetEnvironmentVariable("DROPBOX_TOKEN","sl.xxxxx...","User")  # 영구(새 터미널 필요)
Windows · cmd.exe
set DROPBOX_TOKEN=sl.xxxxx...                 :: 현재 세션만
setx DROPBOX_TOKEN "sl.xxxxx..."              :: 영구(새 터미널 필요)

플래그 방식일회성

bash
dropship send ./my-folder --token "sl.xxxxx..."

03 Usage

사용법

보내기 압축 + 업로드 + 링크 생성

bash
# 폴더 전체를 압축해 전송 (Dropbox 최상위에 업로드)
dropship send ./my-project

# Dropbox의 특정 폴더에 업로드 (없으면 자동 생성)
dropship send ./my-project --folder /Transfers
dropship send ./my-project --folder /Transfers/2026

# 파일 하나 전송, 링크 이름 지정
dropship send report.pdf --name report-final.zip

# 비밀번호 + 만료일 (Dropbox 유료 플랜에서 동작)
dropship send ./photos --password hunter2 --expires 2026-06-30
i

--folder 의 경로는 토큰 권한에 따라 기준이 다릅니다. App folder 권한으로 만든 앱이면 앱 전용 폴더 내부가 기준이고, Full Dropbox 권한이면 Dropbox 최상위가 기준입니다.

출력 예

output
✅ 전송 준비 완료
   공유 링크   : https://www.dropbox.com/scl/fi/.../my-project.zip?rlkey=...&dl=0
   직접 다운로드: https://www.dropbox.com/scl/fi/.../my-project.zip?rlkey=...&dl=1
   curl 명령   : curl -L -o "my-project.zip" "https://www.dropbox.com/scl/fi/.../my-project.zip?rlkey=...&dl=1"

받기 다운로드 · 토큰 불필요

bash
# 1) 현재 폴더에 원본 파일명으로 저장
dropship get "https://www.dropbox.com/scl/fi/.../my-project.zip?rlkey=...&dl=0"

# 2) 특정 폴더에 저장 (원본 파일명 유지) — 폴더가 있으면 그 안에 저장
dropship get "<링크>" -o ~/Downloads                 # macOS / Linux
dropship get "<링크>" -o "C:\Users\User\Downloads"   # Windows

# 3) 없는 폴더에 저장하려면 경로 끝에 슬래시(\ 또는 /)를 붙이면 자동 생성
dropship get "<링크>" -o "C:\Users\User\backup\"     # Windows
dropship get "<링크>" -o ~/backup/                    # macOS / Linux

# 4) 파일명까지 직접 지정
dropship get "<링크>" -o "C:\Users\User\Downloads\backup.zip"

# 5) 다운로드 후 자동 압축 해제
dropship get "<링크>" -o ~/Downloads --extract
i

-o 규칙: 이미 있는 폴더슬래시로 끝나는 경로를 주면 그 폴더 안에 원본 파일명으로 저장하고(없으면 폴더를 만들고), 그 외에는 지정한 경로를 파일명으로 봅니다.

dropship 없이 받기curl / wget / PowerShell

send 가 출력하는 직접 다운로드 링크(dl=1) 는 공개 HTTP URL이라, 받는 쪽은 dropship 없이 기본 명령어로 받을 수 있습니다.

curl / wget
# curl — 리다이렉트 따라가도록 -L 필수
curl -L -o my-project.zip "<직접 다운로드 링크 dl=1>"

# 서버가 알려주는 원본 파일명 그대로 저장
curl -LOJ "<직접 다운로드 링크 dl=1>"

# wget — 리다이렉트는 기본으로 따라감
wget -O my-project.zip "<직접 다운로드 링크 dl=1>"
Windows · PowerShell
Invoke-WebRequest -Uri "<직접 다운로드 링크 dl=1>" -OutFile my-project.zip
# Windows 10+ 에 포함된 curl.exe 도 동일하게 사용 가능
!

반드시 끝이 dl=1 인 링크를 쓰세요. 기본 공유 링크(dl=0)는 미리보기 페이지로 연결됩니다. dropship getdl=0 링크를 줘도 자동으로 dl=1 로 바꿔 받지만, curl/wget은 직접 dl=1 을 줘야 합니다. 비밀번호가 걸린 링크는 curl로 바로 받을 수 없습니다.

04 Internals

동작 방식
  • 150 MiB 이하 파일은 단일 요청으로, 그보다 크면 32 MiB 단위 청크 업로드 세션으로 전송하여 큰 폴더도 안전하게 처리합니다.
  • 같은 이름의 링크가 이미 있으면 새로 만들지 않고 기존 링크를 재사용합니다.
  • 압축 해제 시 zip-slip(경로 탈출) 공격을 차단합니다.

05 Limitations

제한 사항
  • 빈 폴더는 압축에 포함되지 않습니다 (파일 중심).
  • 비밀번호 / 만료일 옵션은 Dropbox 유료 플랜에서만 적용됩니다. 무료 플랜에서 사용하면 API가 명확한 오류를 반환합니다.
  • 현재 인증은 액세스 토큰 방식입니다. 자동 갱신되는 OAuth 리프레시 토큰 플로우는 향후 추가 가능합니다.