Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрипт закачки сайта. 
V
    Опции темы
Хоббит
Дата 17.10.2008, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



Была такая задача: написать скрипт для закачки сайтов на хостинг. Необходимо было закачивать файлы сайта и таблицы базы данных. Файли и таблицы передавались через параметры.
Порядок действий примерно такой.

Получить настройки сайта.

Получить список файлов из параметров.
Получить список таблиц из параметров.

Перейти в папку сайта.
Заархивировать необходимые файлы.
Передать файлы на хостинг через scp
Разархивировать файлы на хостинге через ssh

Сделать дамп необходимых таблиц
Заархивировать дамп
Передать дамп на хостинг
Выполнить дамп

Сделал вот так. Это мой первый sheell скрипт, дайте комментарии, что можно улучшить, что написал не так

Система linux debian

Код

. /lib/lsb/init-functions

site_name=$1
shift

set -- getopt f:t: $*

files=''
tables=''

hasFiles=0
hasTables=0

for arg in $*; do
  
  case $arg in
  -f) isFile=1; isTable=0; hasFiles=1; shift;;
  -t) isFile=0; isTable=1; hasTables=1; shift;;
  
  *) 
    if [ "$isFile" = 1 ]
      then              
        files="$files $arg"
    fi    
    
    if [ "$isTable" = 1 ]
      then
        tables="$tables $arg"
    fi
    shift;;
    
  --) shift; break;
  esac
done

if [ -z "$files" ]
  then files='*'
fi

log_action_begin_msg 'Loading vars'
. /etc/upsite/$site_name 2>/dev/null && \
log_action_end_msg $? || \
{ log_action_end_msg 1; exit; }

site_exclude_option=''

for site_exclude_file in $site_exclude; do
  site_exclude_option="$site_exclude_option --exclude=$site_exclude_file"  
done

cd $site_local_dir

if [ "$hasFiles" = 1 ]    
then

  log_action_begin_msg 'Archiving files'
  tar czf $site_name.tar.gz $site_exclude_option $files 2>/dev/null && \
  log_action_end_msg $? || \
  { log_action_end_msg $?; exit; }

  log_action_begin_msg 'Uploading archive'
  scp -i $ssh_identity $site_name.tar.gz $ssh_user@$ssh_server:$site_remote_dir 1>/dev/null 2>/dev/null && \
  log_action_end_msg $? || \
  { log_action_end_msg $?; exit; }

  rm $site_name.tar.gz

  log_action_begin_msg 'Extract files'
  ssh -i $ssh_identity $ssh_user@$ssh_server "cd $site_remote_dir; tar xzf $site_name.tar.gz; rm $site_name.tar.gz" && \
  log_action_end_msg $? || \
  { log_action_end_msg $?; exit; }
fi

if [ "$hasTables" = 1 ]
then
  log_action_begin_msg 'Dump database'
  mysqldump -u$mysql_local_user -p$mysql_local_pass $site_local_base $tables > $site_local_dir/$site_name.sql && \
  log_action_end_msg $? || \
  { log_action_end_msg $?; exit; }

  log_action_begin_msg 'Archiving dump'
  tar czf $site_name.sql.tar.gz $site_name.sql 2>/dev/null && \
  log_action_end_msg $? || \
  { log_action_end_msg $?; exit; }
  
  log_action_begin_msg 'Uploading dump'
  scp -i $ssh_identity $site_local_dir/$site_name.sql.tar.gz $ssh_user@$ssh_server:$site_remote_dir 1>/dev/null 2>/dev/null && \
  log_action_end_msg $? || \
  { log_action_end_msg $?; exit; }

  rm $site_name.sql
  rm $site_name.sql.tar.gz
  
  log_action_begin_msg 'Query dump'
  ssh -i $ssh_identity $ssh_user@$ssh_server "cd $site_remote_dir; tar xzf $site_name.sql.tar.gz; mysql -u$mysql_remote_user -p$mysql_remote_pass -h$mysql_remote_host $site_remote_base < $site_name.sql; rm $site_name.sql.tar.gz; rm $site_name.sql" 1>/dev/null 2>/dev/null && \
  log_action_end_msg $? || \
  { log_action_end_msg $?; exit; }
fi

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Администрирование"
ZeeLax
Imple
nerezus
Этот форум предназначен для решения вопросов по администрации *n?x-систем, в частности по настройке сложных сетей и обслуживанию серверного оборудования.

  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Администрирование *NIX систем | Следующая тема »


 




[ Время генерации скрипта: 0.0417 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.