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!

link|improve this question
2  
This should go on to superuser.com as this is not a programming related question. – t0mm13b May 22 '10 at 15:38
feedback

migrated from stackoverflow.com May 22 '10 at 22:14

This question came from our site for professional and enthusiast programmers.

3 Answers

This is an FTP sample script to transfer one file:

# /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

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

Add the last line 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.

link|improve this answer
feedback

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.

link|improve this answer
feedback

man 1 ftp says that -u URL file [...]:

Upload files on the command line to URL where URL is one of the ftp URL types as supported by auto-fetch (with an optional target filename for single file uploads), and file is one or more local files to be uploaded.

Thus something like

0 0 * * * /usr/bin/ftp -u "ftp://example.com/dir" file1 file2

would upload files file1 and file2 to directory dir at example.com

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.