• FTP script to automate file transfers to remote server

    Below you will find a FTP script that will allow you to automate your files transfers without requiring any user input. The only problem with this method is you will be putting a username and password into the script file, but having a simple automated FTP file upload or FTP file download probably outweighs the drawback.

    So to describe what this script does:
    First the script will tar and zip all files and folders in the /var/log/ folder to the home directory of the user who runs the script. This will create a dated zip file in the user’s home folder who ran the script. Then it will FTP the files to the remote host. You can then add the script to a cron job to execute it everyday, week, hour, etc.





    This is the script, it is fairly well commented so you know what is going on:

    
    #!/bin/sh
    # Tar and zip log files with todays date
    tar cvf ~/logs.$(date +%F).tar /var/log/*
    gzip logs.$(date +%F).tar
    
    # Add username and PW
    REM_USER=USERNAMEHERE
    REM_PASS=PASSWORDHERE
    
    {
    # Open FTP connection to server
    echo "open FTPHOSTNAMEHERE"
    
    # pass user login from above
    echo "user $REM_USER $REM_PASS"
    
    # If FTP server is requiring user input toggle the echo "prompt" below
    # echo "prompt"
    
    # make sure you are in the folder where you made the zip on the local server
    echo "lcd ~/"
    
    # Change to remote folder [optional]
    echo "cd remotefolder"
    
    # if you want to put multiple files use mput, put will be fine for 1 file
    echo "mput *.gz  "
    
    # Connect to the FTP with the above info
    } | ftp -vin
    
    # Remove the created zip file 
    rm logs.$(date +%F).tar.gz
    
    

    If you run this in the root crontab, it will ensure you have access to all the file you want to zip.

    Here is another FTP script that can be used for the same purpose to automate uploads/downloads to a remote server.

    
    #!/bin/bash
    HOST='ftp.address.com'
    USER=‘SOMEUSER’
    PASSWD=‘SOMEPASSWORD’
    
    tar czf SOMESITE.tar.gz /var/www/SOMESITE
    tar czf SOMEOTHERSITE.tar.gz /var/www/SOMEOTHERSITE
    
    ftp -n -v $HOST << EOT
    ascii
    user $USER $PASSWD
    prompt
    put SOMESITE.tar.gz
    put SOMEOTHERSITE.tar.gz
    bye
    EOT
    
    rm SOMESITE.tar.gz
    rm SOMEOTHERSITE.tar.gz
    
    




    Share

    Leave a reply