파일이나 폴더를 압축해서 Dropbox에 올리고, 전송 가능한 다운로드 링크를 만들어 주는 크로스 플랫폼 CLI 도구.
받는 쪽은 Dropbox 계정이나 토큰 없이 링크만으로 다운로드할 수 있습니다. Go 표준 라이브러리만 사용하므로 외부 의존성이 없고, 빌드 결과물은 런타임 설치가 필요 없는 단일 실행파일입니다.
Dropbox의 소비자용 "Transfer" 기능 자체에는 공개 API가 없습니다. 이 도구는 동일한 목적(압축 → 업로드 → 만료/비밀번호가 가능한 공유 다운로드 링크)을 공개 Sharing API로 구현합니다.
01 Install
설치하면 어디서든 경로 없이 dropship 명령으로 실행할 수 있습니다.
dropship 패키지 받기
빌드된 6개 플랫폼 바이너리 + 소스 + 설치 스크립트가 담긴 zip을 바로 받습니다.
curl -L -o "dropship.zip" "https://www.dropbox.com/scl/fi/d27jo7oehwt9zmerw6xd1/dropship.zip?rlkey=z203lclhjavoeloiu679sbeth&dl=1"방법 A — 설치 스크립트권장
OS/아키텍처를 자동 감지해 알맞은 바이너리를 PATH에 dropship으로 등록합니다.
# bash 로 실행하면 권한 비트(+x)가 없어도 동작합니다
bash install.sh
# 위치를 바꾸려면(관리자 권한 없이): PREFIX=~/.local/bin bash install.shpowershell -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에 있으면 바로 실행됩니다.
go install . # 이 폴더에서방법 C — 수동 복사
dist/에서 본인 OS용 바이너리를 골라 PATH 상의 디렉터리에 복사하면 됩니다.
# 예: 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 |
직접 빌드
go build -o dropship . # 현재 OS용 단일 바이너리
./build.sh # 6개 플랫폼 전부 (dist/ 에 생성)02 Token
업로드에는 액세스 토큰이 필요합니다 (다운로드는 불필요).
- developers/apps 에서 Create app
- Scoped access → 권한(Permissions) 탭에서 다음을 체크
- files.content.write
- sharing.write
- sharing.read (기존 링크 조회용)
- Settings 탭에서 Generated access token 발급
발급한 토큰은 아래 중 한 방법으로 전달합니다. 도구가 찾는 우선순위는 --token 플래그 → DROPBOX_TOKEN 환경변수 → 토큰 파일 순서입니다.
셸마다 환경변수 설정 문법이 다릅니다. export는 Linux/macOS(bash/zsh) 문법이라 Windows PowerShell에서 쓰면 export: ... not recognized 오류가 납니다.
토큰 파일 방식권장 · 한 번만
셸 종류와 무관하게 한 번 저장해두면 이후로는 아무것도 붙이지 않고 dropship send … 만 하면 됩니다.
mkdir -p ~/.config/dropship
echo 'sl.xxxxx...' > ~/.config/dropship/token
chmod 600 ~/.config/dropship/token # 권한 제한(선택)New-Item -ItemType Directory -Force -Path "$HOME\.config\dropship" | Out-Null
"sl.xxxxx..." | Set-Content -Path "$HOME\.config\dropship\token" -Encoding ascii-Encoding ascii 는 일부 PowerShell이 파일 앞에 붙이는 BOM(보이지 않는 문자)으로 토큰이 깨지는 것을 막기 위함입니다.
환경변수 방식
export DROPBOX_TOKEN="sl.xxxxx..." # 현재 세션만
echo 'export DROPBOX_TOKEN="sl.xxxxx..."' >> ~/.bashrc # 영구 (zsh는 ~/.zshrc)$env:DROPBOX_TOKEN = "sl.xxxxx..." # 현재 세션만
[Environment]::SetEnvironmentVariable("DROPBOX_TOKEN","sl.xxxxx...","User") # 영구(새 터미널 필요)set DROPBOX_TOKEN=sl.xxxxx... :: 현재 세션만
setx DROPBOX_TOKEN "sl.xxxxx..." :: 영구(새 터미널 필요)플래그 방식일회성
dropship send ./my-folder --token "sl.xxxxx..."03 Usage
보내기 압축 + 업로드 + 링크 생성
# 폴더 전체를 압축해 전송 (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--folder 의 경로는 토큰 권한에 따라 기준이 다릅니다. App folder 권한으로 만든 앱이면 앱 전용 폴더 내부가 기준이고, Full Dropbox 권한이면 Dropbox 최상위가 기준입니다.
출력 예
✅ 전송 준비 완료
공유 링크 : 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"받기 다운로드 · 토큰 불필요
# 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-o 규칙: 이미 있는 폴더나 슬래시로 끝나는 경로를 주면 그 폴더 안에 원본 파일명으로 저장하고(없으면 폴더를 만들고), 그 외에는 지정한 경로를 파일명으로 봅니다.
dropship 없이 받기curl / wget / PowerShell
send 가 출력하는 직접 다운로드 링크(dl=1) 는 공개 HTTP URL이라, 받는 쪽은 dropship 없이 기본 명령어로 받을 수 있습니다.
# curl — 리다이렉트 따라가도록 -L 필수
curl -L -o my-project.zip "<직접 다운로드 링크 dl=1>"
# 서버가 알려주는 원본 파일명 그대로 저장
curl -LOJ "<직접 다운로드 링크 dl=1>"
# wget — 리다이렉트는 기본으로 따라감
wget -O my-project.zip "<직접 다운로드 링크 dl=1>"Invoke-WebRequest -Uri "<직접 다운로드 링크 dl=1>" -OutFile my-project.zip
# Windows 10+ 에 포함된 curl.exe 도 동일하게 사용 가능반드시 끝이 dl=1 인 링크를 쓰세요. 기본 공유 링크(dl=0)는 미리보기 페이지로 연결됩니다. dropship get 은 dl=0 링크를 줘도 자동으로 dl=1 로 바꿔 받지만, curl/wget은 직접 dl=1 을 줘야 합니다. 비밀번호가 걸린 링크는 curl로 바로 받을 수 없습니다.
04 Internals
- 150 MiB 이하 파일은 단일 요청으로, 그보다 크면 32 MiB 단위 청크 업로드 세션으로 전송하여 큰 폴더도 안전하게 처리합니다.
- 같은 이름의 링크가 이미 있으면 새로 만들지 않고 기존 링크를 재사용합니다.
- 압축 해제 시 zip-slip(경로 탈출) 공격을 차단합니다.
05 Limitations
- 빈 폴더는 압축에 포함되지 않습니다 (파일 중심).
- 비밀번호 / 만료일 옵션은 Dropbox 유료 플랜에서만 적용됩니다. 무료 플랜에서 사용하면 API가 명확한 오류를 반환합니다.
- 현재 인증은 액세스 토큰 방식입니다. 자동 갱신되는 OAuth 리프레시 토큰 플로우는 향후 추가 가능합니다.