Синхронизация папок ftp linux

How to automatically sync the contents of a local folder with the contents of a ftp folder?

After searching everywhere I have not managed to find a specific answer for my question. On Windows there is an application called FTPbox that will automatically sync a local folder with an ftp one every set period of time. My question is, how do I achieve the same thing using Ubuntu? The main thing is here that I dont want to have to do it manually. It needs to be a totally automatic process with no human intervention required (obviously I will have to set this up if that classes as human intervention LOL). Many thanks in anticipation for helpful answers. -Edward

1 Answer 1

First solution

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

Save it on some place with name upload.sh . Give it +x permission.

sudo chmod +x /path_to_script/upload.sh 

Setup crontab to run this command on every x period of time

For running command on every 5 min code is

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

Solution two

Create a small and easy script called lftp-script that LFTP can read:

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

Finally you can run LFTP and start the synchronisation. Set crontab like I write but put command

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

Solution three

sudo apt-get install curlftpfs 

you need to do in order to mount ftp locally is to to run these commands create dir witch will be sync-ed

mount remote ftp dir to local

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

user:pass is the username and password to log into ftp account.

You can add curlftpfs to fstab for automatic mounting by using this line :

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

Источник

Читайте также:  Downloading firefox on linux

Синхронизация файлов на удалённый ftp-сервер

Попалась как-то задачка создать shell-скрипт для автономной синхронизации файлов с локальной Linux-системы на удалённый ftp-сервер.

Первый способ, используя ftp

#!/bin/sh ftp -n -v -p -i "ftp.remote.domain" "login" "password" cd /remotedir lcd /localdir mput * quit

Минусы его заключаются в том, что все файлы из локальной директории закачиваются на удалённый ftp-сервер при каждом вызове скрипта. Именно все, а не те, что изменились.

Второй способ, используя lftp

#!/bin/sh lftp -p 21 -u login,password ftp.remote.domain/remotedir log /localdir/path . quit

листинг всех параметров lftp mirror:

Usage: mirror [OPTS] [remote [local]] Mirror specified remote directory to local directory -c, --continue continue a mirror job if possible -e, --delete delete files not present at remote site --delete-first delete old files before transferring new ones -s, --allow-suid set suid/sgid bits according to remote site --allow-chown try to set owner and group on files --ignore-time ignore time when deciding whether to download -n, --only-newer download only newer files (-c won't work) -r, --no-recursion don't go to subdirectories -p, --no-perms don't set file permissions --no-umask don't apply umask to file modes -R, --reverse reverse mirror (put files) -L, --dereference download symbolic links as files -N, --newer-than=SPEC download only files newer than specified time -P, --parallel[=N] download N files in parallel -i RX, --include RX include matching files -x RX, --exclude RX exclude matching files RX is extended regular expression -v, --verbose[=N] verbose operation --log=FILE write lftp commands being executed to FILE --script=FILE write lftp commands to FILE, but don't execute them --just-print, --dry-run same as --script=- When using -R, the first directory is local and the second is remote. If the second directory is omitted, basename of first directory is used. If both directories are omitted, current local and remote directories are used.

Таким образом, на удалённый ftp из локальной директории загружаются только новые файлы. Отсутствующие в локальной директории файлы также удаляются на удалённом ftp сервере. За это отвечает параметр -e

Читайте также:  Программный рейд astra linux

Источник

Linux синхронизация папок по FTP?

Недавно перешел на Ubuntu. Подскажите, есть ли программа которая дублирует функцию WinSCP по синхронизации папок?

lftp — нет постоянной синхронизации
curlftpfs — должно позволять монтировать папку по ftp, не могу проверить, т.к. работает некорректно если в логине есть @
rsync — нет постоянной синхронизации

Еще есть вариант заморочиться со своим скриптом, но это вариант не для новичков.
Подскажите, кто сталкивался с подобным вопросом? Как решить? Какие есть аналоги?

Olej

Не перетаскивайте из Windows в Linux привычки,которые вы там выработали, и не ищите прямых аналогий.
Вы на этом потеряете огромную уйму времени.
В Linux всё делается а). по-другому и б). множеством способов.

В частности, по вашему вопросу — множеством протоколов.
А свой вопрос вы элементарно можете решить файловым менеджером mc.

1nn0

/usr/bin/lftp -f " open $HOST user $USER $PASS lcd $SOURCEFOLDER mirror --reverse --delete --verbose $SOURCEFOLDER $TARGETFOLDER bye "

Проблемы могут появится, если файлов для синхронизации много или сеть медленная. А риалтайм синхронизацию с FTP «из коробки» вы не получите. В любом случае необходимо будет руками что-то делать.

Taraflex

В WinSCP можно было сразу править «на горячую» файлы на сервере отключив предупреждение о перезаливке файла.

WinSCP не знаю, что это, но судя по названию, это аналог scp.

Так что «аналог» и «дублирует» — это разве что в обратную сторону в лучшем случае.

А что такое «постоянная синхронизация»? Изменился один бит — и пошло-поехало синхронизироваться? Чем cron не устраивает?

И что надо-то — ftp или sftp, etc?

Millerish

Работа происходит по FTP. Очень часто нужно делать маленькие правки на сайтах которые разрабатываю.

Т.е. в WinSCP это выглядело так:
— запускаю программу
— подключаюсь к серверу
— нажимаю значок синхронизации
— WinSCP проверяет мою версию сайта локальную и сравнивает ее с версией на хостинге, если есть более новые изменения у меня — закачивает на сервер, если там более новые — закачивает мне
— (и самое вкусное для меня) в режиме запущенной синхронизации я могу редактировать сайты, а они автоматически загружаться на сервер (очень удобно для мелких правок)

Читайте также:  Install theme kali linux

Источник

советы

Бывает полезно синхронизовать (зеркалировать) каталоги на локальной и удалённой машинах. Например, изменившийся сайт на хостинг выложить или копию чего-то изменяющегося себе скачать.

Пусть есть два каталога: на локальной машине и на удалённой. Предполагаем, что изменения происходит только в одном месте (для объединения параллельных изменений нужно использовать средства управления версиями вроде subversion, а не средства синхронизации). Нужно перенести все произошедшие изменения в другой из них. Это и есть задача синхронизации.

Обычно синхронизация двух каталогов делается с помощью Rsync и SSH.

Пусть изменяется удалённый каталог, копируем его на локальную машину так:

Если же «отражаем» локальный каталог на удалённую машину (выкладываем изменённый сайт на хостинг), то

Полезно поиграться с командой добавляя и убирая слэш («/») после названия исходного каталога, чтобы понять, что он делает (или почитать man rsync ). Потренироваться, кстати, можно и с двумя локальными каталогами.

Если удалять файлы, исчезнувшие в исходном каталоге, но присутствующие в целевом, не нужно — ключ —delete убрать.

Всё это хорошо, да вот только доступ по SSH есть далеко не всегда (например, если хостинг дешёвый. ). Иногда требуется синхронизировать каталоги по FTP. Это умеет программка lftp . О том, как пользоваться lftp, уже писали. Поэтому напишу кратко по теме, а остальное — см. man lftp .

Вытянуть каталог с удалённого сервера (синхронизировать локальный каталог с удалённым):

Это, конечно, можно делать и используя lftp в интерактивном режиме. Если команде mirror параметры не давать, то синхронизуются текущий удалённый и текущий локальный каталог.

Конечно, если задачи синхронизации не стоит, а нужно просто выложить или скачать каталог со всеми подкаталогами, то тогда задачу можно решить проще, scp -r или рекурсивный put , имеющийся во многих других FTP-клиентах, для этого будут достаточны.

Источник

Оцените статью
Adblock
detector