transfer

Easy file sharing from the command line. Files live up to 14 days.

Install the CLI

curl -fsSL HOST/install.sh | sh
up photo.jpg                 # prints the download URL
up -d 1 -n 1 secret.pdf      # 1 day, single download
up big.iso                   # files above 90 MB are cut into parts and reassembled server-side
tar cz ./dir | up dir.tgz    # stdin

POSIX sh, needs only curl. Runs on BusyBox/OpenWrt, macOS and any Linux. Installs into a bin directory already on your PATH, or creates ~/.local/bin and adds it.

Drop files here or click to choose

Upload

curl --upload-file ./hello.txt HOST/hello.txt
# from stdin
echo "hello" | curl --upload-file - HOST/hello.txt

# limit lifetime and number of downloads
curl -H "Max-Days: 1" -H "Max-Downloads: 1" --upload-file ./secret.pdf HOST/secret.pdf

# multiple files via form
curl -F file=@a.txt -F file=@b.txt HOST/

Download

curl -o hello.txt HOST/AbC123/hello.txt
# several files as one tar
curl -o files.tar "HOST/(AbC123/hello.txt,XyZ789/photo.jpg).tar"

Delete

curl -X DELETE <X-Url-Delete header value returned on upload>

Encrypt before uploading

age -p -o - ./secret.tar | curl --upload-file - HOST/secret.tar.age
curl HOST/AbC123/secret.tar.age | age -d -o secret.tar

Shell helper

transfer() {
  [ $# -eq 0 ] && { echo "usage: transfer FILE [FILE..]"; return 1; }
  for f in "$@"; do
    if [ -t 0 ] && [ ! -f "$f" ]; then echo "no such file: $f" >&2; continue; fi
    curl --progress-bar --upload-file "$f" "HOST/$(basename "$f")"; echo
  done
}

Limits