21

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

1 Answer 1

39

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:[email protected]
mirror --reverse -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:[email protected] 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:[email protected] /mnt/host fuse rw,uid=500,user,noauto 0 0
6
  • 1
    TARGETFOLDER='/new' = folder on ftp? SOURCEFOLDER='/home/myuser/backups' = local folder with files i want to upload? Commented Apr 18, 2016 at 11:44
  • yes and yes. :)
    – 2707974
    Commented Apr 18, 2016 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 ;' Commented Apr 18, 2016 at 11:58
  • Based on ftp server path meybe not only /new folder. Check both path.
    – 2707974
    Commented Apr 18, 2016 at 12:01
  • 1
    Very neat! Is it possible to move the files? I.e. remove files that has already been uploaded? Need some way of knowing whether a file has been uploaded or not. Also; what happens if connection are lost in the different solutions? Will it retry to connect and how does one get notified?
    – mr.bjerre
    Commented Oct 10, 2019 at 7:49

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .