Ответы пользователя по тегу Dropbox
  • Бекап в директорию Dropbox на сервере без скачивания остальных файлов?

    #!/bin/bash
    #
    # Dropbox Uploader Script v0.2
    #
    # by Andrea Fabrizi - andrea.fabrizi@gmail.com
    # www.andreafabrizi.it/?dropbox_uploader
    #
    # set -x

    #DROPBOX ACCOUNT
    LOGIN_EMAIL="user@example.org"
    LOGIN_PASSWD="password"

    LOGIN_URL="https://www.dropbox.com/login"
    HOME_URL="https://www.dropbox.com/home"
    UPLOAD_URL="https://dl-web.dropbox.com/upload"
    COOKIE_FILE="/tmp/du_cookie_$RANDOM"
    RESPONSE_FILE="/tmp/du_resp_$RANDOM"
    BIN_DEPS="curl sed grep"
    VERSION="0.2"

    #Remove temporary files
    function remove_temp_files
    {
    rm -fr $COOKIE_FILE
    rm -fr $RESPONSE_FILE
    }

    #Extract token from the specified form
    # $1 = file path
    # $2 = form action
    function get_token
    {
    TOKEN=$(cat $1 | tr -s '\n' ' ' | sed -n -e 's/.*<form action="'$2'"[^>]*>.*<input type="hidden" name="t" value="\([a-z 0-9]*\)".*/\1/p')
    echo $TOKEN
    }

    #CHECK DEPENDENCIES
    for i in $BIN_DEPS; do
    which $i > /dev/null
    if [ $? -ne 0 ]; then
    echo -e "Error: Required file could not be found: $i"
    remove_temp_files
    exit 1
    fi
    done

    #CHECK PARAMETERS
    if [ $# != 2 ]; then
    echo -e " Dropbox Uploader Script v$VERSION"
    echo -e " by Andrea Fabrizi - andrea.fabrizi@gmail.com"
    echo -e "\n Usage:\t $0 [LOCAL_FILE] [REMOTE_FOLDER]\n"
    echo -e " Example:\n\t $0 /etc/myfile.txt /\n"
    remove_temp_files
    exit 1
    fi

    #CHECK FILE
    if [ ! -f $1 ]; then
    echo -e "Error: $1: No such file or directory"
    remove_temp_files
    exit 1
    fi

    UPLOAD_FILE=$1
    DEST_FOLDER=$2

    echo -e " Dropbox Uploader Script v$VERSION\n"

    #LOAD LOGIN PAGE
    echo -ne " > Loading Login Page..."
    curl -s -i -o $RESPONSE_FILE "$LOGIN_URL"

    if [ $? -ne 0 ]; then
    echo -e " Failed!"
    remove_temp_files
    exit 1
    else
    echo -e " OK"
    fi

    #GET TOKEN
    TOKEN=$(get_token "$RESPONSE_FILE" "\/login")
    #echo -e " > Token = $TOKEN"
    if [ "$TOKEN" == "" ]; then
    echo -e " Failed to get Authentication token!"
    remove_temp_files
    exit 1
    fi

    #LOGIN
    echo -ne " > Login..."
    curl -s -i -c $COOKIE_FILE -o $RESPONSE_FILE --data "login_email=$LOGIN_EMAIL&login_password=$LOGIN_PASSWD&t=$TOKEN" "$LOGIN_URL"
    grep "location: /home" $RESPONSE_FILE > /dev/null

    if [ $? -ne 0 ]; then
    echo -e " Failed!"
    remove_temp_files
    exit 1
    else
    echo -e " OK"
    fi

    #LOAD HOME
    echo -ne " > Loading Home..."
    curl -s -i -b $COOKIE_FILE -o $RESPONSE_FILE "$HOME_URL"

    if [ $? -ne 0 ]; then
    echo -e " Failed!"
    remove_temp_files
    exit 1
    else
    echo -e " OK"
    fi

    #GET TOKEN
    TOKEN=$(get_token "$RESPONSE_FILE" "https:\/\/dl-web.dropbox.com\/upload")
    #echo -e " > Token = $TOKEN"
    if [ "$TOKEN" == "" ]; then
    echo -e " Failed to get Upload token!"
    remove_temp_files
    exit 1
    fi

    #UPLOAD
    echo -ne " > Uploading file..."
    curl -s -i -b $COOKIE_FILE -o $RESPONSE_FILE -F "plain=yes" -F "dest=$DEST_FOLDER" -F "t=$TOKEN" -F "file=@$UPLOAD_FILE" "$UPLOAD_URL"
    grep "HTTP/1.1 302 FOUND" $RESPONSE_FILE > /dev/null

    if [ $? -ne 0 ]; then
    echo -e " Failed!"
    remove_temp_files
    exit 1
    else
    echo -e " OK"
    fi

    remove_temp_files
    Ответ написан
    2 комментария