I need help with a cron job. A automatic ftp backup will pickup sql.tar.gz and upload to remote ftp server under CentOS Linux. How do I automate entire procedure to upload file /tmp/backup/sql.tar.gz?
You can use standard ftp client for File transfer protocol. The program allows a user to transfer files to and from a remote network site. However, modern FTP client follows little different syntax to upload file.
Here is a quick script to upload file:
#!/bin/sh USERNAME="your-ftp-user-name" PASSWORD="your-ftp-password" SERVER="your-ftp.server.com" # local directory to pickup *.tar.gz file FILE="/tmp/backup" # remote server directory to upload backup BACKUPDIR="/pro/backup/sql" # login to remote server ftp -n -i $SERVER <<EOF user $USERNAME $PASSWORD cd $BACKUPDIR mput $FILE/*.tar.gz quit EOF
Make sure script has executable permissions:
$ chmod +x /path/to/ftp.backup.script.sh
Setup a cron job to run script at 15:30 (24 hr clock time) times:
15 30 * * * /path/to/ftp.backup.script.sh
Above script should work with all modern ftp client under any Linux / UNIX version.
A shell script to dump all mysql database and upload them via lftp program
Make sure you have lftp client installed:
# yum install lftp
#!/bin/bash ### MySQL Server Login Info ### MUSER="root" MPASS="MYSQL-ROOT-PASSWORD" # mysql server MHOST="localhost" ### FTP SERVER Login info ### FTPU="FTP-SERVER-USER-NAME" FTPP="FTP-SERVER-PASSWORD" FTPS="FTP-SERVER-IP-ADDRESS" MYSQL="$(which mysql)" MYSQLDUMP="$(which mysqldump)" BAK="/backup/mysql" GZIP="$(which gzip)" NOW=$(date +"%d-%m-%Y") [ ! -d $BAK ] && mkdir -p $BAK || /bin/rm -f $BAK/* DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')" for db in $DBS do FILE=$BAK/$db.$NOW-$(date +"%T").gz $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE done lftp -u $FTPU,$FTPP -e "mkdir /mysql/$NOW;cd /mysql/$NOW; mput /backup/mysql/*; quit" $FTPS
Set a cron job:
# crontab -e
Run mysql backup ftp script everyday at midnight:
@midnight /path/to/mysql.backup.sh >/dev/null 2>&1
Related: Increase productivity with FTP autologin and macros and backup related shell script.
- Email FAQ to a friend
- Printable version
- Rss Feed
- Last Updated: 6-3-09

{ 8 comments… read them below or add one }
I think this is not secure.
Where does it say it’s secure?
It does the job, period.
FTP itself isn’t secure
Hey, this is very helpful. Thank for the script.
It would be better to encrypt at least the user and pass with md5…
very useful, thanks.
Hey,
It is very helpful. Though have not tried it yet, I believe it will work like charm.
Thank you, it’s very helpful.
One note, it’s useful to run ftp with ‘-i’ option also, so I use ‘ftp -ni’.
It will disable confirmation at mput for all files and also enable you to transfer more all files you filter (*.tar.gz in article.)
My $0.02