You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4.4 KiB

Table of Contents

Aliases

Add alias to .bashrc or .zshrc

Using curl

transfer() {
    curl --progress-bar --upload-file "$1" https://transfer.sh/$(basename "$1") | tee /dev/null;
    echo
}

alias transfer=transfer

Using wget

transfer() {
    wget -t 1 -qO - --method=PUT --body-file="$1" --header="Content-Type: $(file -b --mime-type "$1")" https://transfer.sh/$(basename "$1");
    echo
}

alias transfer=transfer

Add alias for fish-shell

Using curl

function transfer --description 'Upload a file to transfer.sh'
    if [ $argv[1] ]
        # write to output to tmpfile because of progress bar
        set -l tmpfile ( mktemp -t transferXXXXXX )
        curl --progress-bar --upload-file "$argv[1]" https://transfer.sh/(basename $argv[1]) >> $tmpfile
        cat $tmpfile
        command rm -f $tmpfile
    else
        echo 'usage: transfer FILE_TO_TRANSFER'
    end
end

funcsave transfer

Using wget

function transfer --description 'Upload a file to transfer.sh'
    if [ $argv[1] ]
        wget -t 1 -qO - --method=PUT --body-file="$argv[1]" --header="Content-Type: (file -b --mime-type $argv[1])" https://transfer.sh/(basename $argv[1])
    else
        echo 'usage: transfer FILE_TO_TRANSFER'
    end
end

funcsave transfer

Now run it like this:

$ transfer test.txt

Add alias on Windows

Put a file called transfer.cmd somewhere in your PATH with this inside it:

@echo off
setlocal
:: use env vars to pass names to PS, to avoid escaping issues
set FN=%~nx1
set FULL=%1
powershell -noprofile -command "$(Invoke-Webrequest -Method put -Infile $Env:FULL https://transfer.sh/$Env:FN).Content"

Uploading and Downloading

Uploading with wget

$ wget --method PUT --body-file=/tmp/file.tar https://transfer.sh/file.tar -O - -nv 

Uploading with PowerShell

PS H:\> invoke-webrequest -method put -infile .\file.txt https://transfer.sh/file.txt 

Upload using HTTPie

$ http https://transfer.sh/ -vv < /tmp/test.log 

Uploading a filtered text file

$ grep 'pound' /var/log/syslog | curl --upload-file - https://transfer.sh/pound.log 

Downloading with curl

$ curl https://transfer.sh/1lDau/test.txt -o test.txt

Downloading with wget

$ wget https://transfer.sh/1lDau/test.txt

Archiving and backups

Backup, encrypt and transfer a MySQL dump

$ mysqldump --all-databases | gzip | gpg -ac -o- | curl -X PUT --upload-file "-" https://transfer.sh/test.txt

Archive and upload directory

$ tar -czf - /var/log/journal | curl --upload-file - https://transfer.sh/journal.tar.gz

Uploading multiple files at once

$ curl -i -F filedata=@/tmp/hello.txt -F filedata=@/tmp/hello2.txt https://transfer.sh/

Combining downloads as zip or tar.gz archive

$ curl https://transfer.sh/(15HKz/hello.txt,15HKz/hello.txt).tar.gz
$ curl https://transfer.sh/(15HKz/hello.txt,15HKz/hello.txt).zip 
$ transfer /tmp/hello.txt | mail -s "Hello World" user@yourmaildomain.com 

Encrypting and decrypting

Encrypting files with password using gpg

$ cat /tmp/hello.txt | gpg -ac -o- | curl -X PUT --upload-file "-" https://transfer.sh/test.txt

Downloading and decrypting

$ curl https://transfer.sh/1lDau/test.txt | gpg -o- > /tmp/hello.txt 

Import keys from keybase

$ keybase track [them] # Encrypt for recipient(s)
$ cat somebackupfile.tar.gz | keybase encrypt [them] | curl --upload-file '-' https://transfer.sh/test.txt # Decrypt
$ curl https://transfer.sh/sqUFi/test.md | keybase decrypt

Scanning for viruses

Scan for malware or viruses using Clamav

$ wget http://www.eicar.org/download/eicar.com
$ curl -X PUT --upload-file ./eicar.com https://transfer.sh/eicar.com/scan
$ curl -X PUT --upload-file nhgbhhj https://transfer.sh/test.txt/virustotal