How to create a cron job to upload files to an FTP server

4

3

I would like to create a cron job that uploads files from a directory on my computer to my FTP server. I would like it to do it daily at midnight. I know pretty much nothing about cron, so I apologize if I sound stupid!

Christopher

Posted 2010-05-22T15:25:48.863

Reputation: 91

2This should go on to superuser.com as this is not a programming related question. – t0mm13b – 2010-05-22T15:38:04.460

Answers

10

This is an FTP sample script to transfer one file: (Note you can use an FQDN instead of IP)

#!/bin/bash

# $1 is the file name for the you want to tranfer
# usage: this_script  <filename>
IP_address="xx.xxx.xx.xx"
username="remote_ftp_username"
domain = sample.domain.ftp
password= password

ftp -n > ftp_$$.log <<EOF
 verbose
 open $IP_address
 USER $username $password
 put $1
 bye
EOF

Add the > ftp_$$.log only if you need logging. Then you can use the

crontab -e

command to edit the cronjob table and add your script.

This is an Example:

If you liked to have a the script above, (assume you have it in home and its name is myscript.sh) /home/myscript.sh, run every day at 2am, you have to do:

# crontab -e

and then you have to add the following entry:

0 2 * * * /home/myscript.sh

As a reference, here you have a crontab entry parameters meaning:

* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

This tutorial could also help you.

microspino

Posted 2010-05-22T15:25:48.863

Reputation: 911

0

man crontab will show you what you need. You'll want something like:

0 0 * * *  yourScript.sh

in your crontab file. Note that scripts under cron run with a cut-down environment, so you'll have to specify your env settings that the script requires in that script.

Brian Agnew

Posted 2010-05-22T15:25:48.863

Reputation: 795