transfer.sh
Easy and fast file sharing from the command-line.
A self-hosted command-line file sharing server, run one curl command to upload a file and get back a shareable link, with support for S3, Google Drive, or local storage.
Transfer.sh is a tool for sharing files from the command line. Instead of opening a website, signing in, and uploading through a browser, you run a single command in your terminal and get back a link you can send to someone else. The description calls it easy and fast file sharing from the command-line.
It works as a self-hosted server. The code in this repository is the server itself, so anyone can run their own instance. The maintainers explicitly say that if you want to use the software, you should host your own installation rather than relying on a third party. The server can store uploaded files in several places: Amazon S3, Google Drive, Storj, or the local file system on the machine running the server.
Uploads and downloads happen through ordinary HTTP requests, which means standard tools like curl can talk to it without any custom client. A few special request headers let you tweak behaviour: you can cap the number of downloads a link allows, set how many days the file lives before being deleted, or ask the server to encrypt the file with a password. You can also encrypt files yourself before uploading, using something like gpg, so the server never sees the plain contents. Every upload comes back with a delete URL so you can remove the file when you no longer need it.
The README mentions optional integration with VirusTotal for scanning uploads, basic HTTP authentication, IP allow and block lists, and TLS configuration for serving over HTTPS. The project is written in Go and is distributed both as source and as a Docker image, based on the topics listed. The full README is longer than what was provided.
Where it fits
- Share a log file or build artifact from a CI pipeline using a single curl command without opening a browser.
- Run your own file-sharing service on a VPS or Docker host instead of relying on third-party upload sites.
- Upload sensitive files with gpg encryption before sending so the server never sees the plain contents.
- Set expiry dates and download limits on shared files so they automatically disappear after use.