DEV Community

Jitendra
Jitendra

Posted on

Resumable file upload (TUS protocol implementation) using pure bash

Introducing tusc.sh - bash script for resumable file upload using tus protocol.

GitHub logo adhocore / tusc.sh

TUS client protocol implementation for bash.

adhocore/tusc.sh

Latest Version Travis Build Software License

tusc is TUS client protocol implementation for bash.

tusc lets you upload big files to servers supporting tus protocol right from your terminal.

If anything goes wrong, you can rerun the command to resume upload from where it was left off.

Installation

# Requirements: # jq sudo apt install jq -y curl -sSLo ~/tusc https://raw.githubusercontent.com/adhocore/tusc.sh/master/tusc.sh chmod +x ~/tusc && sudo ln -s ~/tusc /usr/local/bin/tusc

Usage and Examples

 tusc v0.0.1 | (c) Jitendra Adhikari tusc is bash implementation of tus-client (https://tus.io) Usage tusc <--options> tusc <host> <file> [algo] Options: -a --algo The algorigthm for key &/or checksum. (Eg: sha1, sha256) -f --file The file to upload. -h --help Show help information and usage. -H --host The tus-server host where file is uploaded. Examples: tusc version # prints current version of itself tusc --help # shows this help tusc 0:1080 ww.mp4 # uploads ww.mp4 to http://0.0.0.0:1080 tusc -f

Installation

sudo apt install jq -y curl -sSLo ~/tusc https://raw.githubusercontent.com/adhocore/tusc.sh/master/tusc.sh chmod +x ~/tusc && sudo ln -s ~/tusc /usr/local/bin/tusc 

Getting Started

To get hands on locally, you can install tusd server.

Then,

# run tusd server (http://0.0.0.0:1080) tusd -dir ~/.tusd-data & # start uploading large files DEBUG=1 tusc --host 0:1080 --file /full/path/to/large/file 

While upload is in progress, you can force abort it using Ctrl+C

Then resume upload again:

DEBUG=1 tusc --host 0:1080 --file /full/path/to/large/file 

It should start from where it last stopped.

You can check the uploaded files like so:

ls -al ~/.tusd-data 

Feedback and suggestions are welcome and highly appreciated.

Thanks :)

Top comments (0)