Решено: Резервирование по ftp (директории рекурсивно)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

sptica
Сообщения: 126
ОС: Ubuntu

Решено: Резервирование по ftp

Сообщение sptica »

Здравствуйте.

Имею vsftpd сервер с ssl шифрованием на одном из серверов. Очень хочется туда периодически сливать директорию с другого сервера по крону. Простыми средствами не получается копировать туда директорию с любым кол-вом поддиректорий и файлов рекурсивно. Mput умеет максимум * на файлы, а нужны ещё директории, поддриектории и т.д.

Вот до чего я сейчас дошёл, но этого явно недостаточно:

Код: Выделить всё

#!/bin/sh

ftp -n ftp-server << END_SCRIPT
user user passwd
prompt
mput *
bye
END_SCRIPT


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

Подскажите пожалуйста как это можно реализовать кто сталкивался или имеет какие-то мысли на сей счёт :).

Спасибо!
Спасибо сказали:
Аватара пользователя
yars
Сообщения: 1147
Статус: Slacker!
ОС: Slackware64-current

Re: Решено: Резервирование по ftp

Сообщение yars »

Можно попробовать wget на стороне куда хотите сливать директорию:

Код: Выделить всё

wget -r --ftp-user=user --ftp-password=password "ftp://ftp.muserver.org/myproject/mydir"

Получится точно такая же иерархия каталогов.
Slackware64-current/Xfce/Xiaomi Mi Notebook Pro 15.6 | Arch Linux/Xfce/Lenovo G580
-------------
Registered Linux User #557010
Спасибо сказали:
Аватара пользователя
arkhnchul
Сообщения: 2284
Статус: Толчковый инженер
ОС: Debian, Fedora

Re: Решено: Резервирование по ftp

Сообщение arkhnchul »

вообще для этого есть rsync. А так - затарить и закинуть один тарбол, если уж каталог не получается. Или забить на mput и ковырять другие клиенты (ncftpput например).
Losing is fun!
Спасибо сказали:
sptica
Сообщения: 126
ОС: Ubuntu

Re: Решено: Резервирование по ftp

Сообщение sptica »

arkhnchul писал(а):
05.05.2012 18:02
вообще для этого есть rsync. А так - затарить и закинуть один тарбол, если уж каталог не получается. Или забить на mput и ковырять другие клиенты (ncftpput например).


Спасибо конечно, но rsync мне не подходит потому что не надо мне синхронизировать ничего, мне надо единоразово ночью, когда сеть свободна, скопировать директорию полностью. Я рассматривал ещё вариант с ssh. Но его не хочется, потому что по ssh можно смотреть корень и вообще видеть всё, а в ftp можно настроить так, чтобы не было видно ничего, в том числе и содержимого директории, куда что-то заливается.

Затарить выход конечно, но это трата ресурса сервера на затаривание (там мноооого всего) и потом второго сервера на растаривание. Вообще на текущем этапе этот вариант кажется самым жизнеспособным.

Ncftpput не умеет работать с ssl и это огромная пичаль для меня.

Ещё варианты есть? :)



yars писал(а):
05.05.2012 16:58
Можно попробовать wget на стороне куда хотите сливать директорию:

Код: Выделить всё

wget -r --ftp-user=user --ftp-password=password "ftp://ftp.muserver.org/myproject/mydir"

Получится точно такая же иерархия каталогов.


Вариант, но тогда нужно поднимать несколько ftp серверов, откуда сливать. В идеале я хочу получить одно ftp хранилище, куда многие будут фигню и не фигню всякую сливать. Спасибо, хоть и не очень подходит :).
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Решено: Резервирование по ftp

Сообщение drBatty »

sptica писал(а):
10.05.2012 10:48
но rsync мне не подходит потому что не надо мне синхронизировать ничего, мне надо единоразово ночью, когда сеть свободна, скопировать директорию полностью.

подходит. Даже ещё и лучше - если какие-то файлы не изменились, они не скопируются. Хотя можно и удалять файлы перед копированием.
sptica писал(а):
10.05.2012 10:48
Я рассматривал ещё вариант с ssh. Но его не хочется, потому что по ssh можно смотреть корень и вообще видеть всё

по ssh как раз намного проще огородить юзера. ну и да, вы так говорите, что "смотреть в корень" это что-то плохое...
sptica писал(а):
10.05.2012 10:48
а в ftp можно настроить так, чтобы не было видно ничего, в том числе и содержимого директории, куда что-то заливается.

это можно реализовать и без FTP, средствами FS - разрешите запись и запретите чтение.
sptica писал(а):
10.05.2012 10:48
Затарить выход конечно, но это трата ресурса сервера на затаривание (там мноооого всего) и потом второго сервера на растаривание.

не будет там никаких трат ресурсов, мало того, этот вариант будет наоборот, скорее всего самым быстрым. Например как-то так:

Код: Выделить всё

tar -czf - | ssh remote_host tar -xf -

sptica писал(а):
10.05.2012 10:48
Ещё варианты есть?

посмотрите lftp на предмет mirror. Но повторюсь - это не слишком и быстро, tar получается быстрее. Впрочем дело ваше.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Kreept
Сообщения: 107
ОС: Linux

Re: Решено: Резервирование по ftp

Сообщение Kreept »

lftp -u $USER,$PASS -e "mirror --delete --only-newer --verbose $RCD $LCD ; bye;" $HOST

lftp синхронизация -- поищите в гугле там более детально все описано.
Спасибо сказали:
sptica
Сообщения: 126
ОС: Ubuntu

Re: Решено: Резервирование по ftp

Сообщение sptica »

drBatty писал(а):
10.05.2012 14:15
sptica писал(а):
10.05.2012 10:48
но rsync мне не подходит потому что не надо мне синхронизировать ничего, мне надо единоразово ночью, когда сеть свободна, скопировать директорию полностью.

подходит. Даже ещё и лучше - если какие-то файлы не изменились, они не скопируются. Хотя можно и удалять файлы перед копированием.
sptica писал(а):
10.05.2012 10:48
Я рассматривал ещё вариант с ssh. Но его не хочется, потому что по ssh можно смотреть корень и вообще видеть всё

по ssh как раз намного проще огородить юзера. ну и да, вы так говорите, что "смотреть в корень" это что-то плохое...
sptica писал(а):
10.05.2012 10:48
а в ftp можно настроить так, чтобы не было видно ничего, в том числе и содержимого директории, куда что-то заливается.

это можно реализовать и без FTP, средствами FS - разрешите запись и запретите чтение.
sptica писал(а):
10.05.2012 10:48
Затарить выход конечно, но это трата ресурса сервера на затаривание (там мноооого всего) и потом второго сервера на растаривание.

не будет там никаких трат ресурсов, мало того, этот вариант будет наоборот, скорее всего самым быстрым. Например как-то так:

Код: Выделить всё

tar -czf - | ssh remote_host tar -xf -

sptica писал(а):
10.05.2012 10:48
Ещё варианты есть?

посмотрите lftp на предмет mirror. Но повторюсь - это не слишком и быстро, tar получается быстрее. Впрочем дело ваше.


Спасибо за исчерпывающий ответ, остановился вот на этом варианте в ftp:

Код: Выделить всё

put "| tar cvf - /somedir/aa " aa.ta
Спасибо сказали: