9

After searching everywhere I have not managed to find a specific answer for my question.

On Windows there is an application called FTPbox that will automatically sync a local folder with an ftp one every set period of time.

My question is, how do I achieve the same thing using Ubuntu? The main thing is here that I dont want to have to do it manually. It needs to be a totally automatic process with no human intervention required (obviously I will have to set this up if that classes as human intervention LOL).

Many thanks in anticipation for helpful answers.

-Edward

16

First solution

Install lftp

sudo apt-get install lftp

after that create script

#!/bin/bash
HOST='mysite.com'
USER='myuser'
PASS='myuser'
TARGETFOLDER='/new'
SOURCEFOLDER='/home/myuser/backups'

lftp -f "
open $HOST
user $USER $PASS
lcd $SOURCEFOLDER
mirror --reverse --delete --verbose $SOURCEFOLDER $TARGETFOLDER
bye
"

Save it on some place with name upload.sh. Give it +x permission.

sudo chmod +x /path_to_script/upload.sh

Setup crontab to run this command on every x period of time

For editing crontab run

crontab -e

For running command on every 5 min code is

 */5 * * * * /path_to_script/upload.sh

on every hour

 0 */1 * * * /path_to_script/upload.sh

to run on 4 am

 0 4 * * * /path_to_script/upload.sh

Solution two

Create a small and easy script called lftp-script that LFTP can read:

open ftp://username:password@website.com
mirror -v --only-newer /home/local/path/ /website.com/public_html/

Finally you can run LFTP and start the synchronisation. Set crontab like I write but put command

lftp -f /path/to/lftp-script

something like this

 */5 * * * * lftp -f /path/to/lftp-script

Solution three

Install curlftpfs

sudo apt-get install curlftpfs

you need to do in order to mount ftp locally is to to run these commands create dir witch will be sync-ed

mkdir hostr

mount remote ftp dir to local

sudo curlftpfs -o allow_other ftp://user:pass@ftp.example.com host

user:pass is the username and password to log into ftp account.

You can add curlftpfs to fstab for automatic mounting by using this line :

curlftpfs#user:pass@ftp.example.com /mnt/host fuse rw,uid=500,user,noauto 0 0
  • 1
    TARGETFOLDER='/new' = folder on ftp? SOURCEFOLDER='/home/myuser/backups' = local folder with files i want to upload? – Edward Nunn Apr 18 '16 at 11:44
  • yes and yes. :) – 2707974 Apr 18 '16 at 11:46
  • saying this Transferring file Untitled 1.odt' mirror: /home/edward/bl3/bl2/bl1/Untitled 1.odt: No such file or directory Unknown command ;' – Edward Nunn Apr 18 '16 at 11:58
  • Based on ftp server path meybe not only /new folder. Check both path. – 2707974 Apr 18 '16 at 12:01
  • If you create folder in source folder on local, that folder must be sync-ed with ftp folder. – 2707974 Apr 18 '16 at 12:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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