我想将两个文件夹相互同步。它应该有两种方式,始终保持文件夹最新(我使用常规cronjob)。但是,首先我没有让双向文件传输工作(它只是从ftp下载而不是相反)。
其次,它从ftp下载整个内容,即使已在ftp上设置了登录信息,因此访问仅限于特定文件夹。为什么?
这是代码(提前谢谢!):
#!/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
答案 0 :(得分:6)
你可能不再需要这个了(迟了4年),但我会更新这个,如果有人在这里遇到同样的问题,这里有帮助。
如果要将FTP服务器文件夹与文件夹中的内容同步,则应使用类似
的内容#!/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
"
如果您想使用它从本地文件夹同步到FTP服务器,只需删除--reverse并在镜像命令中交换文件夹。
#!/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
"
要做一些你在问题中评论的内容,同步两种方式并保持每个方面的最新值,我不相信单独使用lftp可能需要检测更改并决定使用哪个脚本。