Bart Simons

terminal

A 1 post collection


Quickest way to transfer files from your terminal

 •  Filed under terminal, one command, file transfer, quick, code snippet

Do you often use the SCP command to transfer files from your computer to a remote server? This little code snippet may come to good use for you:

function push {  
    if [[ $1 == "config" ]]; then
        if [[ $# == 1 ]]; then
            echo "Usage:   push config username hostname destinationpath optionalkeyfile"
            echo "Example: push config root 1.2.3.4 /root/ ~/Documents/SSHKeys/server.key"
        elif [[ $# == 2 ]] || [[ $# == 3 ]]; then
            echo "Too few arguments were specified, run 'push config' for help."
        elif [[ $# == 4 ]]; then
            PUSH_ISCONFIGURED=1
            PUSH_USERNAME=$2
            PUSH_HOST=$3
            PUSH_DESTINATION=$4
        elif [[ $# == 5 ]]; then
            PUSH_ISCONFIGURED=1
            PUSH_USERNAME=$2
            PUSH_HOST=$3
            PUSH_DESTINATION=$4
            PUSH_KEYFILE=$5
        fi
    elif [[ $# == 0 ]]; then
        if [[ $PUSH_ISCONFIGURED == 1 ]] && [[ ! -z $PUSH_KEYFILE ]]; then
            scp -ri $PUSH_KEYFILE . $PUSH_USERNAME@$PUSH_HOST:$PUSH_DESTINATION
        elif [[ $PUSH_ISCONFIGURED == 1 ]] && [[ -z $PUSH_KEYFILE ]]; then
            scp -r . $PUSH_USERNAME@$PUSH_HOST:$PUSH_DESTINATION
        elif [[ -z $PUSH_ISCONFIGURED ]]; then
            echo "Usage:   push config username hostname destinationpath optionalkeyfile"
            echo "Example: push config root 1.2.3.4 /root/ ~/Documents/SSHKeys/server.key"
        fi
    fi
}

All I have to do now to upload files is using push config to setup connection parameters, and push in my code directory to quickly push files.

A nice little time-saving code snippet if you use the scp command often.

You can put it in your ~/.zshrc file if you use ZSH, or in ~/.bashrc if you use Bash as your shell.