Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
 Аватар для selik
3 / 3 / 0
Регистрация: 14.09.2010
Сообщений: 11

Передача данных между серверами

14.09.2010, 17:32. Показов 4639. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте. наобходима помощь в написнии скрипта, который бы забирал данные с одного сервера на другой. если выполнить команды вручную, то все работает, а вот в скрипте к сожалению нет. написанием скриптов занимаюсь впервые. заранее спасибо.

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[#/bin/bash
 
PATH="/bin:/usr/bin:/usr/ccs/bin:/usr/xpg4/bin:/usr/sfw/bin:${PATH}"; export PATH;
TMPFILE=/tmp/ftp1.$$
TMP=/tmp/files1.$$
#trap 'rm -f ${TMP} ; exit' 0 1 2 3 15
remhost=192.168.10.243 
ftpflags="-i -n"
echo "user fggfg fggf" > ${TMP}
echo binary >> ${TMP}
echo cd /export/home/oracle/backup/logical/full/ >> ${TMP}
echo ls -rt >> ${TMP}
echo quit >> ${TMP}
#listing dir
ftp ${ftpflags} ${remhost} < ${TMP} >> ${TMP}
 
echo "user fggfg fggf" > ${TMPFILE}
echo binary >> ${TMPFILE}
echo cd /export/home/oracle/backup/logical/full/ >> ${TMPFILE}
#echo ls -rt >> ${TMPFILE}
echo lcd /home/reco/backup/ >> ${TMPFILE};
for i in `awk '{if(index($9,"11")!=0) print $9}' ${TMP}`
do
#if "$i" != "11"
#then 
echo get "$i" >> ${TMPFILE}
echo rename "$i" "${i:1}" >> ${TMPFILE}
#else
# continue
#fi
#echo $i >> ${TMPFILE}
done
echo quit >> ${TMPFILE}
ftp ${ftpflags} ${remhost} < ${TMPFILE} >> ${TMPFILE}
echo ${remhost} >> ${TMPFILE}]
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.09.2010, 17:32
Ответы с готовыми решениями:

Настройка ssh тунеля между двумя серверами
Есть сервер, пусть ип 8.8.8.8 есть сервер 2, пусть ип 9.9.9.9 нужно, при помощи scp копировать файлы с сервера 9.9.9.9 на сервер...

Организация сети ipv6 между серверами debian
Доброго времени суток! Столкнулся с такой задачей: Есть 4 виртуальных сервера Samba и 2 таких же gw схема подключения следующая: ...

Настройка локальной сети между двумя серверами через локальный порт.
Добрый день, Уважаемые Знатоки и Искушенные Повелители Линукса:) Буду очень признателен за помощь в данном вопросе, не судите строго, я не...

17
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
14.09.2010, 20:21
ты по-русски скажи чего должен делать твой скрипт
0
 Аватар для selik
3 / 3 / 0
Регистрация: 14.09.2010
Сообщений: 11
15.09.2010, 11:13  [ТС]
есть 2 сервера. на один из них еженедельно поступают данные. нужно забирать с этого сервера эти данные и отправлять их на другой. данные забираются по определенной маске (в данном примере это файлы имя которых начинается с "11"). для того что бы получать только новые данные, файл который уже пересылался переименовывается (возможно кто то может предложить другой путь определения того, пересылался файл или нет).
передача данных идет по ftp. помимо этого создается 2 файла, в один из которых (TMP=/tmp/files1.$$) записываются комнады необходимые для подключения к удаленному серверу (ftp ${ftpflags} ${remhost} < ${TMP} >> ${TMP}). соединение происходит. все данные и параметры передаются.
начиная с 17 строки происходят аналогичные действия, позволяющие забрать файлы с сервера. только вот в скрипте это уже не работает. все условия написанны правильно и работают, проверенно. может можно как то по другому без записи в файл огранизовать передачу параметров?
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
15.09.2010, 11:22
wget -r -N -l25 --timeout=10 ftp://$usr_name:$usr_pass@$srv_url/11*

Добавлено через 2 минуты
альтернативный вариант - монтировать фтп сервер в файловую систему
http://curlftpfs.sourceforge.net/
1
4 / 4 / 0
Регистрация: 01.07.2010
Сообщений: 88
16.09.2010, 16:03
Цитата Сообщение от dmkhn Посмотреть сообщение
wget -r -N -l25 --timeout=10 ftp://$usr_name:$usr_pass@$srv_url/11*

Добавлено через 2 минуты
альтернативный вариант - монтировать фтп сервер в файловую систему
http://curlftpfs.sourceforge.net/
А зачем timeout=10 ? Или это значение по умолчанию?

Я тоже реализовал передачу данных на другой сервер и тоже черз фтп. У меня это пока выгледит так:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#! /bin/bash
cd /
cd /home/videoserv/ 
tar -cf /home/test/8.tar 8
cd /home/test/
user=ХХХХХХ
passwd=ХХХХХХ
ftp -n ХХХХХХХХХХ <<script
user $user $passwd
binary
pass
mput 8.tar
quit
script
rm -r 8.tar
cd /home/videoserv/8/
rm -rf *
quit
А кстати может кто подскажет как реализовать докачку если произошол дисконект ? и ещё у меня почему то передача только до 12:00 идёт . А обьёмы большие не успевают иногда передоваться.

А можно ли за архивировать эти данные ? и есть ли доступ к 1вому серверу на который поступает информация ?
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
16.09.2010, 16:22
Цитата Сообщение от Apofis Посмотреть сообщение
А зачем timeout=10
на случай, если где-то "связь зависает"...
1
 Аватар для selik
3 / 3 / 0
Регистрация: 14.09.2010
Сообщений: 11
17.09.2010, 12:37  [ТС]
можно еще использовать rsync. достаточно удобно если файлы нужно просто передать с одного сервера на другой (в моем случае это подходит).
Bash
1
2
#!/bin/sh
rsync -rc -t -v -e ssh --rsync-path=/usr/local/bin/rsync --temp-dir=/tmp user@host:/export/home/oracle/backup/logical/full/ /home/reco/backup/
где
-e ssh - использовать SSH протокол в качестве транспорта
-t - сохранять время модификации; очень рекомендуется, если предполагается повторная пересылка
-r - рекурсивно
-c - для принятия решения о том пересылать файл или нет используется контрольная сумма (мне так больше понравилось)
–temp-dir=/tmp - каталог для временных файлов во время пересылки
--rsync-path=/usr/local/bin/rsync - путь к rsync на машине-источнике
ser@host:/export/home/oracle/backup/logical/full/ - пользователь@хост:Путь-к-каталогу-источнику
/home/reco/backup/ - путь куда сохранять

Есть один ньюанс, если в каталоге-источнике указать в конце слэш - то в каталоге назначения появится содержимое каталога-источника. Если же слэш не указывать - то в каталоге-приемнике появится копия каталога источника.

только вот данный скрипт запускается, отрабатывает, но ничего не копирует.... может кто знает почему? кстати копирую с solaris10 на Fedora4.
1
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
17.09.2010, 13:10
Цитата Сообщение от selik Посмотреть сообщение
ser@host:/export/home/oracle/backup/logical/full/ - пользователь@хост:Путь-к-каталогу-источнику
может тут не хватает протокола? (типа ftp, http и т.п.)..
1
4 / 4 / 0
Регистрация: 01.07.2010
Сообщений: 88
17.09.2010, 13:33
А можно пример как правильно синхронизировать файлы архива? (убунту--->виндовс сервер 2003)
допустим если хеш не совподает то докачать. А если всё совпадает то выйти из скрипта.
0
 Аватар для selik
3 / 3 / 0
Регистрация: 14.09.2010
Сообщений: 11
17.09.2010, 14:54  [ТС]
Цитата Сообщение от dmkhn Посмотреть сообщение
может тут не хватает протокола? (типа ftp, http и т.п.)..


-e ssh - есть указание протокола. причем явное.

вообще нижеприведенная команда выполняется успешно, вопрос в том как ее в скрипт правильно записать...
Bash
1
rsync -rc -t -v -e ssh --rsync-path=/usr/local/bin/rsync --temp-dir=/tmp user@host:/export/home/oracle/backup/logical/full/ /home/reco/backup/
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
17.09.2010, 15:06
Цитата Сообщение от Apofis Посмотреть сообщение
А можно пример как правильно синхронизировать файлы архива?
я делал вот такое - монтировал фтп сервер в файловую систему с помощью софта, находящегося по указанной ссылке:
http://curlftpfs.sourceforge.net/
это я проделывал с удаленным фтп-сервером.
если же все это в одной локальной сети, то просто монтировал сетевую шару в файловую систему
mount -t cifs $share_name $mount_point -o username=$user,password=$pass,iocharset= utf8,rw

а после того, как удаленная папка примонтирована, банальными средствами программы-архиватора производится обновление архива. например, у того же zip-а, добавление ключа -u

zip -y -u -r -9 $backup_file_name "$mount_point"/*
1
4 / 4 / 0
Регистрация: 01.07.2010
Сообщений: 88
17.09.2010, 15:14
Ftp сервер с широким каналом, но закрытого типа. То есть к нему нет доступа только есть учётка. логин пароль. и 500 гб пространства. Так что при монтировать не получится надо как то синхронизировать архив.
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
17.09.2010, 15:55
Цитата Сообщение от Apofis Посмотреть сообщение
Так что при монтировать не получится
почему? у меня прекрасно монтировалось командой
curlftpfs $srv_url $mnt_dir -o user=$usr_name:$usr_pass
1
4 / 4 / 0
Регистрация: 01.07.2010
Сообщений: 88
17.09.2010, 17:55
Извени просто не так понял. Спасибо, в понедельник попробую

Добавлено через 34 минуты
Поставил прогу что ты рекомендовал.
написал ка ты говорил но ругается пишет типа не найдена точка монтирования или же не существующая папка монтинорвания. я писал так /home/aleks/8
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
17.09.2010, 18:03
раз так ругается, значит папка /home/aleks/8 либо не существует либо же проблема с правами доступа на нее.
1
4 / 4 / 0
Регистрация: 01.07.2010
Сообщений: 88
20.09.2010, 16:15
Вроде всё проверил и прова и наличии папки. Всёравно не монтируется. Вот скрин
Миниатюры
Передача данных между серверами  
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
20.09.2010, 16:24
оно же вам пишет - mountpoint is not empty - точка монтирования непустая. То есть, монтировать нужно в папку, которую вы создали для этих целей. Держать в ней что-либо не нужно.

с другой стороны, оно вам предлагает, если так уж сильно хочется, то смонтировать туда, куда хочется, использовав в команде монтирования опцию nonempty
1
4 / 4 / 0
Регистрация: 01.07.2010
Сообщений: 88
20.09.2010, 17:45
Всё заработало ОГРОМНОЕ СПАСИБО!!! Чет с 8 я реально тупанул ну бывает...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.09.2010, 17:45
Помогаю со студенческими работами здесь

передача данных между серверами
принцип таков - при поступлении на сайт данных они посылаются на промежуточный сервер там обрабатываются а после эти данные посылаются на...

Передача данных между серверами
есть один сервер который формирует у себя данные в формате json есть второй сервер который должен эти данные принять вопрос: как это...

Передача больших массивов данных между серверами
Нужен совет по передаче данных между серверами на Windows. Не локалка, но везде белые IP. Файлы 20gb и больше, поэтому файлообмениики и...

Передача текстовых данных между двумя веб серверами
Привет друзья!) Вопрос у меня достаточно простой, однако я не смог найти нормального ответа на форуме, на эту тему. Речь идет о...

Передача пакетов между серверами
Доброго времени суток! По тз необходимо реализовать &quot;Хаб&quot;. Чтобы к этому хабу отправляли пакеты и сервера и клиенты, а хаб делал рассылку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru