如何自动将本地文件夹的内容与 ftp 文件夹的内容同步?

Edw*_*unn 15 sync ftp

在到处搜索之后,我还没有找到我的问题的具体答案。

在 Windows 上,有一个名为FTPbox的应用程序,它会每隔一段时间自动将本地文件夹与 ftp 同步。

我的问题是,如何使用 Ubuntu 实现同样的目标?最重要的是,我不想手动完成。它需要是一个完全自动化的过程,不需要人工干预(显然,如果该类为人工干预 LOL,我将不得不设置它)。

非常感谢期待有用的答案。

-爱德华

270*_*974 26

第一个解决方案

安装 lftp

sudo apt-get install lftp
Run Code Online (Sandbox Code Playgroud)

之后创建脚本

#!/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
"
Run Code Online (Sandbox Code Playgroud)

将其保存在 name 的某个地方upload.sh。给它+x许可。

sudo chmod +x /path_to_script/upload.sh
Run Code Online (Sandbox Code Playgroud)

设置crontab在每个x时间段运行此命令

用于编辑 crontab 运行

crontab -e
Run Code Online (Sandbox Code Playgroud)

每 5 分钟运行一次命令的代码是

 */5 * * * * /path_to_script/upload.sh
Run Code Online (Sandbox Code Playgroud)

每小时

 0 */1 * * * /path_to_script/upload.sh
Run Code Online (Sandbox Code Playgroud)

凌晨 4 点运行

 0 4 * * * /path_to_script/upload.sh
Run Code Online (Sandbox Code Playgroud)

解决方案二

创建一个名为的小而简单的脚本lftp-scriptLFTP可以读取:

open ftp://username:password@website.com
mirror -v --only-newer /home/local/path/ /website.com/public_html/
Run Code Online (Sandbox Code Playgroud)

最后,您可以运行LFTP并开始同步。像我写的一样设置 crontab 但放置命令

lftp -f /path/to/lftp-script
Run Code Online (Sandbox Code Playgroud)

像这样的东西

 */5 * * * * lftp -f /path/to/lftp-script
Run Code Online (Sandbox Code Playgroud)

解决方案三

安装 curlftpfs

sudo apt-get install curlftpfs
Run Code Online (Sandbox Code Playgroud)

为了在本地挂载 ftp,您需要做的是运行这些命令 create dir witch will be sync-ed

mkdir hostr
Run Code Online (Sandbox Code Playgroud)

将远程 ftp 目录挂载到本地

sudo curlftpfs -o allow_other ftp://user:pass@ftp.example.com host
Run Code Online (Sandbox Code Playgroud)

user:pass是登录 ftp 帐户的用户名和密码。

您可以使用以下行添加curlftpfsfstab自动安装:

curlftpfs#user:pass@ftp.example.com /mnt/host fuse rw,uid=500,user,noauto 0 0
Run Code Online (Sandbox Code Playgroud)