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:
30 15 * * * /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.
You should follow me on twitter here or grab rss feed to keep track of new changes.
Featured Articles:
- 30 Handy Bash Shell Aliases For Linux / Unix / Mac OS X
- Top 30 Nmap Command Examples For Sys/Network Admins
- 25 PHP Security Best Practices For Sys Admins
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- 20 Linux Server Hardening Security Tips
- Linux: 20 Iptables Examples For New SysAdmins
- Top 20 OpenSSH Server Best Security Practices
- Top 20 Nginx WebServer Best Security Practices
- 20 Examples: Make Sure Unix / Linux Configuration Files Are Free From Syntax Errors
- 15 Greatest Open Source Terminal Applications Of 2012

- My 10 UNIX Command Line Mistakes
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- The Novice Guide To Buying A Linux Laptop














{ 18 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
Thanks very much for the script, worked like a champ with minimal modifications needed.
Hi the problem is mput line.
if i give the full path its give 550 error which is seems permission related.
I just then give the file name for example mput filename works for me.
what is the problem with
mput path/of/filename
one more thing i solve the permission problem but i think mput full path name not supported?
please help me
Ekram, try changing directory either befor you enter FTP or once in. That way, it will default to looking for your file in that directory. Don’t forget the / at the beginning of your path (/path/of/filename or //path/of/filename). Note: I am going over a secure network.
#/bin/ksh
# —– auto ftp DRAFT!!!
cd /path/of/filename
HOST=’Server_IP’
USER=’User_ID’
PASSWD=’password’
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
binary
put filename.txt /path/of/out_file/test_ftp.txt
quit
END_SCRIPT
just a note that your cron cmd is wrong: crontab lines are minute, hour.
How can I get this to show the output from ftp so I can verify the file transferred correctly?
Wilfred, I disagree….Maytech is far more secure than most ftp file transfer services.
any idea about this error:
when i tried the same from a RHEL5.5 machine to Argosoft server on deafult port “21″
ERROR: “”KERBEROS_V4 rejected as an authentication type”"
I have an some files in cent os.I need to schedule auto backup that files to the another file storage server directory. I need that script.will you please anyone post that script.
Source : Cent Os
Destination : Samba File storage server( another directory).
Thanks for your help, that is exactly for my work!!!