@hckn

Как можно оптимизировать этот скрипт?

Написал первый в жизни скрипт, для первоначального деплоя приложения (приложение состоит из двух отдельных - фронт и API).

1. полная настройка VPS, установка зависимостей, конфиг для сервера и тд
2. копирование ключей от гита, клонирование репозиториев, установка зависимостей и их запуск
3. перенос БД, перенос статики (картинки)

#!/bin/bash

USER=iamuser
HOST=88.88.88.88
DOMAIN=example.com

scp keys/* $USER@$HOST:/home/$USER/.ssh


Все работает на удивление без нареканий. Но поскольку это первый опыт и я совсем не изучал баш скриптинг (от слова вообще), подозреваю есть глупые моменты, и вообще можно как-то оптимизировать все это дело. Прошу помощи и критики более опытных разработчиков.
  • Вопрос задан
  • 183 просмотра
Решения вопроса 4
@alexstup
Оркестр
Попробуйте ansible
Ответ написан
@AVKor
Код не структурирован.

Нет обработки ошибок.

Нет комментариев.
Ответ написан
2ord
@2ord
Неплохо для первого раза.
Согласен с AVKor насчёт обработки ошибок. Это нельзя игнорировать. Процесс может неудачно выполниться, связь с удалённым сервером может быть временно недоступна и т.д.
  1. Как минимум, вот этот кусок надо проработать лучше:
    mongodump --db super-db
    tar -cvf dump.tar dump/
    scp dump.tar $USER@$HOST:/home/$USER
    rm dump.tar && rm -rf dump/

    Если mongodump закончится с ненулевым статусом, то дампа не будет и тогда останешься без резервной копии.

  2. Архивы TAR лучше создавать в сочетании со сжатием. Ключами -j, -J или -z
  3. Если нет необходимости именно в TAR, то можно синхронизировать файлы на уданённый сервер при помощи утилиты rsync
Ответ написан
@kadmin88
Вот тут согласен с Романом.
mongodump --db super-db
tar -cvf dump.tar dump/
scp dump.tar $USER@$HOST:/home/$USER
rm dump.tar && rm -rf dump/

Можно добавить условие на проверку успешного выполнения, например так:
tar -cvf dump.tar dump/
if
[ $? == 0 ]
then
scp dump.tar $USER@$HOST:/home/$USER && rm -f ./dump.tar && rm -rf ./dump/
else
echo "error while dump"
fi
и, все-таки надежнее использовать полные пути.

Если не прав, поправьте меня.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы