Deutsch
Germany.ruФорумы → Архив Досок→ Linux & Co

синхронизация папок на серверах

485  
alexnaum местный житель11.04.09 00:00
alexnaum
11.04.09 00:00 
Собственно, такое дело. Есть два сайта - должны быть зеркалами, находятся на разных серверах - не на своих, на хостингах- нужно сделать автоматическую синхронизацию в обе стороны. Сначала расскажу, как сделал.
Есть программа под винду, собственно, она конечно не одна, ну да не важно, в принципе, с задачей справляется, расписание настраивается через назначенные задания, все работает, один самый главный недостаток: приходится держать копии необходимых для синхр-ции папок на локальном компьютере, под виндой.
Ессно, мне тут же рассказали, что все это называется "через ж..у", и таким образом я узнал про такую замечательную весчь, как Rsync.
Все было бы просто замечательно,как я понял, осталось бы только написать пару скриптов и прописать их в кроне, но проблема в том, что на одном сервере есть ssh-доступ, а на другом нет и не предвидится, только ftp. Таким образом, засада..Тыкнулся я туда-сюда, посмотрел в сторону sshfs и curlftpfs -думал, на том сервере,где есть ssh, примонтировать папки другого сервера, где только ftp - однако, мне под юзером этого сделать не дают....что делать дальше, мыслей пока нет...вернее, можно,конечно, пустить это дело через локальную машину, под убунту, где у меня есть ессно рутовые права, и где я папки на обеих серверах могу примонтировать - но этот вариант не очень сильно будет отличаться от того, что есть сейчас - синхронизация будет идти через третью машину, там под виндой, а тут под Линуксом...ну кроме разве что опыта в деле линукса...В общем,у кого еще есть какие мысли, буду рад... есть у меня мысль,поменять тут хостера и взять с ssh, я тут в соседнем разделе тему поднимал эту. Но это пока еще решится....
Да, и вот еще какой вопрос, по ходу. Не могу понять, если все же с ssh что то получается, как автоматизировать подключение по ssh,чтобы скрипт исполнялся без требования ввода пароля?
Например, в случае с фтп этой проблемы нет- я пишу, например, curlftpfs user:pass@site.com /media/ftp - и подключаюсь автоматом.
В случае с ssh такое не катит, надо вводить пароль, ну или, как я выяснил, можно сгенерировать ключи и отослать их на сервер..но опять же, где у них там авторизированные ключи лежат, и кто мне даст мои ключи туда прописать? Или это надо связываться с админом сервера и просить об этом? Или не стоит даже пытаться?
#1 
swar0g прохожий12.04.09 11:44
swar0g
NEW 12.04.09 11:44 
в ответ alexnaum 11.04.09 00:00
а есть ли возможность поднять ssh сервер на той машине, на которой его нет? не с рутовскими правами, конечно (поэтому ограничение, что порт должен быть больше 1024, на стандартном двадцать втором повесить не получится). какой-нить легковесомый dropbear, чтобы не заморачиваться с openssh.
#2 
BSDLamer Хвостатый Carpal Tunnel14.04.09 16:59
BSDLamer
NEW 14.04.09 16:59 
в ответ alexnaum 11.04.09 00:00
что/какой обьем синхронизируешь ? какой линк между серверами ? для rsync вроде хватит одного ssh-сервера и одного клиента. Какие у тебя права на обоих серверах ? Firewall-ом ты правишь ?
0001, 0010, 0011, 0100, 0101, вышел зайчег погулядь
#3 
alexnaum местный житель15.04.09 00:39
alexnaum
NEW 15.04.09 00:39 
в ответ BSDLamer 14.04.09 16:59
Синхронизирую изменяющиеся папки на сайтах, порядка 4-5 папок, в основном это фотки - в галерее, форуме,аватары там после регистрации..объем так щас сразу точно не скажу..ну там полюбому пока не много - весь сайт около 300 метров, добавляется пока в принципе медленно - по 10 в неделю где то..Да, вроде тоже я так понял, что для rsync хватает одного ssh-сервера и одного клиента. Но - права там у меня там ограничены - рутовых нет, равно как и возможности заюзать sudo или добавить добавить себя в группу fuse...а на втором сервере только ftp..В принципе ладно...если вариантов особых нет, я тут щас у себя локально поднял сервак под фряхой виртуальной, как раз эти дни занимаюсь,чисто для опыта и личного удовольствия, вчера добился того, чтобы все это дело сделать видимым извне под DynDNS...вроде получается все..понимаю, что большого реального смысла это не имеет, но, опять же, для личного опыта и некоторого кайфа, думаю, сделаю пока и третье зеркало - которое вот там на своей машине и буду держать...в этом варианте у меня есть все права, а когда надоест, надеюсь, переедем уже на другой хостинг, где есть ssh...
#4 
  anatoli888 свой человек20.04.09 12:02
NEW 20.04.09 12:02 
в ответ alexnaum 11.04.09 00:00
alexnaum местный житель30.04.09 10:57
alexnaum
NEW 30.04.09 10:57 
в ответ anatoli888 20.04.09 12:02
reoback
Почитал, но пока не совсем понял. Если для того, чтобы чтобы backup между двумя серверами проходил по ftp, мне надо как минимум на один сервер установить reoback, то у меня кайне шанс..Если - опять же - проводить посредством своей машины, то есть ли какое - то преимущество перед тем же rsync например? По rsync эти дни читал очень много, и тестил, тестил...
Появились вопросы по нему.
Хотел я было всю эту свою систему связать воедино, таким образом:
итак, на одном сайте есть ssh, на втором только ftp...как выяснилось, и rsync-а там нет. Ну ладно, на локальной своей машине установил rsync, изучил кучу инфы и начал тестить. думал, свяжусь с одним сайтом по ssh, либо примонтирую с помощью sshfs, с другим - примонтировав с помощью curlftpfs..таким образом, все что мне нужно будет у меня как бы в одной системе, ну и буду их синхронизировать постепенно..
Но не все так просто оказалось.
В любом случае, синхронизация при таком способе подключения к удаленным серверам выполняется с ошибками, как с sshfs, так и с curlftpfs
Ошибки в основном говорят о запрете доступа, не тех правах, а иногда и о разрыве коннекта. Например:
В ответ на:
rsync: rename "/media/sshfs/data/111/222/.Codir_1251.txt.qZUHFn" -> "Codir_1251.txt": Operation not permitted (1)
sent 293 bytes received 31 bytes 72.00 bytes/sec
total size is 542280 speedup is 1673.70
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1040) [sender=3.0.5]

или
В ответ на:
rsync: chown "/media/sshfs/data/111/222/." failed: Permission denied (13)
rsync: chown "/media/sshfs/data/111/222/10f89rp.jpg" failed: Permission denied (13)
rsync: chown "/media/sshfs/data/111/222/2nltymt.jpg" failed: Permission denied (13)
rsync: chown "/media/sshfs/data/111/222/3467580103_e25a8a1016_o.jpg" failed: Permission denied (13)
rsync: chown "/media/sshfs/data/111/222/8mart.gif" failed: Permission denied (13)
rsync: chown "/media/sshfs/data/111/222/Addons.JPG" failed: Permission denied (13)

и еще
В ответ на:
rsync: recv_generator: failed to stat "/media/ftp/data/111/222/8mart.gif": Socket is not connected (57)
rsync: recv_generator: failed to stat "/media/ftp/data/111/222/Addons.JPG": Socket is not connected (57)
rsync: recv_generator: failed to stat "/media/ftp/data/111/222/Codir_1251.txt": Socket is not connected (57)

Ну вот, самое интересное, что если это все делать напрямую, без предварительного монтирования с sshfs или curlftpfs все выполняется без ошибок..Думал, может какие аргументы нужны хитрые, но я в случае как прямом так и через костыль прописываю одинаковые опции...
Собственно, меня бы устроило прямое копирование через ssh, если бы на втором сервере была бы такая возможность.. да и потом, мне показалась возможность сделать все через curlftpfs уж очень заманчивым: можно монтировать автоматом без ввода пароля - в случае с ssh как я понял, такое возможно только после авторизации ключей, а авторизировать их мне надо на удаленном сервере...а у меня там прав нету..
В общем,чешу репу, может вы что подскажете...
#6