Linux 使用lftp将本地文件夹与ftp文件夹同步的语法?

Linux 使用lftp将本地文件夹与ftp文件夹同步的语法?,linux,ftp,sync,synchronize,Linux,Ftp,Sync,Synchronize,我想同步两个文件夹。它应该有两种方式,始终使文件夹保持最新(我使用常规的cronjob)。然而,首先,我没有让双向文件传输工作(它只是从ftp下载,而不是相反) 其次,它从ftp下载整个内容,即使登录信息已在ftp上设置,因此访问仅限于特定文件夹。为什么 以下是代码(提前感谢!): 你可能不再需要这个了(晚了4年),但我会更新这个,如果有人在这里遇到同样的问题,我会提供帮助 如果要将FTP服务器文件夹与文件夹中的内容同步,则应使用以下内容 #/bin/bash #获取用户名和密码 USER=用户

我想同步两个文件夹。它应该有两种方式,始终使文件夹保持最新(我使用常规的cronjob)。然而,首先,我没有让双向文件传输工作(它只是从ftp下载,而不是相反)

其次,它从ftp下载整个内容,即使登录信息已在ftp上设置,因此访问仅限于特定文件夹。为什么

以下是代码(提前感谢!):


你可能不再需要这个了(晚了4年),但我会更新这个,如果有人在这里遇到同样的问题,我会提供帮助

如果要将FTP服务器文件夹与文件夹中的内容同步,则应使用以下内容

#/bin/bash
#获取用户名和密码
USER=用户名#您的用户名
PASS=密码#您的密码
HOST=“myftpserver.com”#只保留地址
LCD=“~/Desktop/localfolder”#您的本地目录
RCD=“/users/user”#FTP服务器目录
lftp-f“
打开$HOST
用户$用户$通行证
lcd$lcd
镜像--继续--反向--删除--详细$LCD$RCD
再见
" 
如果要使用它从本地文件夹同步到FTP服务器,只需在mirror命令中删除--reverse并交换文件夹

#/bin/bash
#获取用户名和密码
USER=用户名#您的用户名
PASS=密码#您的密码
HOST=“myftpserver.com”#只保留地址
LCD=“~/Desktop/localfolder”#您的本地目录
RCD=“/users/user”#FTP服务器目录
lftp-f“
打开$HOST
用户$用户$通行证
lcd$lcd
镜像--继续--删除--详细$RCD$LCD
再见
" 

要执行如您在问题中所评论的操作,请同步两种方式并保持每种方式的最新值,我不认为单独使用lftp是可能的。您需要一些东西来检测更改并决定使用哪个脚本。

似乎更像是ServerFault而不是StackOverflow的问题。请阅读rsync不能通过ftp工作。似乎我需要弄清楚如何使用lftp。好的,现在我已经让它工作了。然而,“同步”并不是很有用。例如,如果我从其中一个文件夹中删除了一个文件,那么下次运行lftp脚本时会再次下载该文件。由于这是我所追求的同步,我当然希望它保留最新的更改,而不是覆盖它。lftp是否可能实现这一点?为了澄清:第一个脚本在服务器端进行更改,第二个脚本–Locally我收到提示输入密码,有没有办法避免这种情况?第二个脚本中有一个错误:您需要将“lcd$lcd”更改为“cd$RCD”。这个答案非常不清楚。我会因为“同步”方向错误而不敢用空文件夹替换文件夹。两个脚本的描述基本相同(“从本地到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