Skip to content

Instantly share code, notes, and snippets.

@phoenixweiss
Last active August 3, 2022 21:20
Show Gist options
  • Save phoenixweiss/53f15a40aa12cb7726354de7a084c474 to your computer and use it in GitHub Desktop.
Save phoenixweiss/53f15a40aa12cb7726354de7a084c474 to your computer and use it in GitHub Desktop.
На смену заколебавшему и периодически не работающему capistrano-db-tasks запилил свой скриптик
PROJECT_NAME=""
REMOTE_USER=""
REMOTE_SERVER=""
REMOTE_PROJECT_FOLDER=""
REMOTE_DB_HOST=""
REMOTE_DB_NAME=""
REMOTE_DB_USER=""
REMOTE_DB_PASS=""
REMOTE_DB_PORT=""
REMOTE_ASSETS_FOLDER=""
LOCAL_DB_HOST=""
LOCAL_DB_NAME=""
LOCAL_DB_USER=""
LOCAL_DB_PASS=""
LOCAL_DB_PORT=""
LOCAL_ASSETS_FOLDER=""

Remote-to-Local MySQL DB + Assets pull script

Чтобы утащить дамп БД с прода, на случай если не работает db:pull, есть рукописный скриптик db_pull.sh, на всякий случай перед запуском нужно дать на него права: chmod +x db_pull.sh и удостовериться что все переменные внесены в .env, а какие именно -- можно посмотреть в .env.example, после чего по классике:

bash db_pull.sh

Теперь и ассеты утащить можно при помощи:

bash assets_pull.sh
source .env
scp -r ${REMOTE_USER}@${REMOTE_SERVER}:"${REMOTE_ASSETS_FOLDER}/*" "$(pwd)/${LOCAL_ASSETS_FOLDER}"
source .env
timestamp=$(date "+%Y%m%d%H%M%S")
file_basename="${REMOTE_DB_NAME}_${timestamp}"
ssh ${REMOTE_USER}@${REMOTE_SERVER} "mysqldump -u${REMOTE_DB_USER} -h${REMOTE_DB_HOST} -p${REMOTE_DB_PASS} -P${REMOTE_DB_PORT} ${REMOTE_DB_NAME} > ~/${file_basename}.sql; tar -czvf ${file_basename}.tar.gz ${file_basename}.sql"
scp ${REMOTE_USER}@${REMOTE_SERVER}:"~/${file_basename}.tar.gz" "$(pwd)/db"
tar -ztvf "db/${file_basename}.tar.gz"
tar -xvf "db/${file_basename}.tar.gz" -C "db/"
if [ -n "$LOCAL_DB_PASS" ]; then
echo "Пароль есть"
mysql -u${LOCAL_DB_USER} -h${LOCAL_DB_HOST} -p${LOCAL_DB_PASS} -P${LOCAL_DB_PORT} ${LOCAL_DB_NAME} < "db/${file_basename}.sql"
else
echo "Пароля нет"
mysql -u${LOCAL_DB_USER} -h${LOCAL_DB_HOST} -P${LOCAL_DB_PORT} ${LOCAL_DB_NAME} < "db/${file_basename}.sql"
fi
ssh ${REMOTE_USER}@${REMOTE_SERVER} "rm ~/${file_basename}.*"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment