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


9

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

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

我的问题是,如何使用Ubuntu实现同一目标?最主要的是,我不想手动进行此操作。它必须是一个完全自动化的过程,不需要人工干预(显然,如果将其归类为人工干预LOL,我将不得不进行设置)。

非常感谢您提供有用的答案。

-爱德华

Answers:


16

第一个解决方案

安装 lftp

sudo apt-get install lftp

之后创建脚本

#!/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
"

用name将其保存在某个地方upload.sh。授予+x权限。

sudo chmod +x /path_to_script/upload.sh

安装程序crontab在每个x时间段上运行此命令

用于编辑crontab运行

crontab -e

对于每5分钟运行一次命令,代码为

 */5 * * * * /path_to_script/upload.sh

每小时

 0 */1 * * * /path_to_script/upload.sh

凌晨4点跑步

 0 4 * * * /path_to_script/upload.sh

解决方案二

创建一个小的简单脚本lftp-script,该脚本LFTP可以读取:

open ftp://username:password@website.com
mirror -v --only-newer /home/local/path/ /website.com/public_html/

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

lftp -f /path/to/lftp-script

像这样的东西

 */5 * * * * lftp -f /path/to/lftp-script

解决方法三

安装 curlftpfs

sudo apt-get install curlftpfs

您需要做的是在本地挂载ftp,是要运行这些命令,创建dir witch将被同步

mkdir hostr

将远程ftp目录挂载到本地

sudo curlftpfs -o allow_other ftp://user:pass@ftp.example.com host

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

您可以使用以下命令添加curlftpfs到以fstab进行自动安装:

curlftpfs#user:pass@ftp.example.com /mnt/host fuse rw,uid=500,user,noauto 0 0

1
TARGETFOLDER ='/ new'= FTP上的文件夹?SOURCEFOLDER ='/ home / myuser / backups'=包含我要上传的文件的本地文件夹?
爱德华·纳恩

是的,是的。:)
2707974 '16

说这个转移文件Untitled 1.odt' mirror: /home/edward/bl3/bl2/bl1/Untitled 1.odt: No such file or directory Unknown command ;'
爱德华·努恩

基于ftp服务器的路径不仅是meybe /new文件夹。检查两个路径。
2707974 '16

如果您source folder在本地创建文件夹,则该文件夹必须与ftp文件夹同步。
2707974 '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.