Syntax for using lftp to synchronize local folder with an ftp folder?

匿名 (未验证) 提交于 2019-12-03 00:58:01

问题:

I would like to synchronize two folders with each other. It should go two ways, always keeping the folders up to date (I use a regular cronjob). However, first I do not get the two way file transfer to work (it just downloads from the ftp and not the opposite).

Secondly, it downloads the whole content from the ftp, even though the login information has been set up on the ftp so that access is only restricted to a specific folder. Why??

Here is the code (thanks in advance!):

#!/bin/bash  #get username and password USER=username PASS=password  HOST="myftpserver.com/users/user1/" #here I have tried with only specifying server name as well as including whole path LCD="~/Desktop/localfolder/" RCD="users/user1/"  lftp -c "set ftp:list-options -a; open ftp://$USER:$PASS@$HOST;  lcd $LCD; mirror -c --reverse --verbose $LCD $RCD" #I have tried a few different options w/o result 

回答1:

You probably don't need this anymore (4 years late) but I'll just update this, and if someone get's here with the same issue here's a help.

If you want to sync the FTP server folder with the content in your folder you should use something like this

#!/bin/bash  #get username and password USER=username                   #Your username PASS=password                   #Your password HOST="myftpserver.com"          #Keep just the address LCD="~/Desktop/localfolder"     #Your local directory RCD="/users/user"               #FTP server directory  lftp -f " open $HOST user $USER $PASS lcd $LCD mirror --continue --reverse --delete --verbose $LCD $RCD bye "  

And if you want to use it to sync from your local folder to the FTP server simply remove the --reverse and swap the folders in the mirror command.

#!/bin/bash  #get username and password USER=username                   #Your username PASS=password                   #Your password HOST="myftpserver.com"          #Keep just the address LCD="~/Desktop/localfolder"     #Your local directory RCD="/users/user"               #FTP server directory  lftp -f " open $HOST user $USER $PASS lcd $LCD mirror --continue --delete --verbose $RCD $LCD bye "  

To do something like you commented in the question, sync both ways and keep the most updated value from each, i don't believe it's possible using lftp alone you'll need something to detect the change and decide which script use.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!