Как автоматически синхронизировать содержимое локальной папки с содержимым папки ftp?

9

После поиска везде я не смог найти конкретного ответа на мой вопрос.

В Windows есть приложение под названием FTPbox, которое будет автоматически синхронизировать локальную папку с FTP- файлом каждый установленный период времени.

У меня вопрос, как мне добиться того же, используя Ubuntu? Главное здесь, что я не хочу делать это вручную. Это должен быть полностью автоматический процесс без вмешательства человека (очевидно, мне придется настроить его, если эти классы будут рассматриваться как вмешательство человека).

Большое спасибо в ожидании за полезные ответы.

Эдвард

Эдвард Нанн
источник

Ответы:

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
"

Сохраните его в каком-нибудь месте с именем 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, который будет синхронизирован

mkdir hostr

смонтировать удаленный ftp dir на локальный

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
2707974
источник
1
TARGETFOLDER = '/ new' = папка на ftp? SOURCEFOLDER = '/ home / myuser / backups' = локальная папка с файлами, которые я хочу загрузить?
Эдвард Нанн
да и да. :)
2707974
говоря этот файл передачи Untitled 1.odt' mirror: /home/edward/bl3/bl2/bl1/Untitled 1.odt: No such file or directory Unknown command ;
Эдвард Нанн
Исходя из пути к серверу ftp, мейбе не только /newпапка. Проверьте оба пути.
2707974
Если вы создаете папку source folderна локальном компьютере, эта папка должна быть синхронизирована с папкой ftp.
2707974