Полезные команды для переноса данных между серверами linux

Есть у меня один проект на phpBB и на днях решил его перенести с сервера на сервер и за одно обновить ему версию. Проект не сложный и требовалось перенести только БД и само приложение. Больше проблем возникло с переходом на более новую версию phpBB, пришлось поковыряться, но об этом я не буду рассказывать. А расскажу о полезных linux командах, которые помогают совершить такой перенос. Начнем с самого простого, но с самого ценного — это база данных. В данном случае разумнее всего переносить данные с помощью mysqldump. Причем сразу с сервера на сервер, без лишних телодвижений. Я создал временного пользователя, которому открыл доступ с наружи. Для этого необходимо просто установить следующие права:

CREATE USER 'mysqldumpUser'@'remoteHost' IDENTIFIED BY 'password';
GRANT SELECT, LOCK TABLES ON dbName.* TO mysqldumpUser@'remoteHost';

Создаем пользователя mysqldumpUser с паролем password, который может приходить с remoteHost(ip-адрес) и выставляем ему нужные права. После этого базу можно забирать прямо с сервера на который хотим залить данные.

mysqldump -u userName -ppassword -h host dbName | mysql -u otherUserName -potherPassword newDbName 

Для тех кто боится указывать пароли в консоле, кстати об этом предупреждает и mysql, что так делать не стоит, можно указывать ключ -p пустым и вводить его в интерактивном режиме. Либо можно в начале команды поставить пробел, тогда bash не запомнит команду в свою историю. Не забудьте после всех работ удалить пользователя, а то различных курьезных ситуаций и так достаточно. Если вы все таки сделали дамп в архив и выкачали его на нужный сервер, то его можно залить сразу в БД, без распаковки в файл:

tar -xOzf dump.tar.gz | mysql -u otherUser -potherPassword newDbName

Флаг -O указывает о том, что нужно просто перенаправить все в стандартный поток вывода. Тем самым нам не надо распаковывать с начало в файл, а потом файл лить в БД. Теперь немного о работе с файлами. Пакуем нашу папку в .tar.gz. Помимо экономии трафика данный тип архива поможет сохранить все права на папки и файлы, включая группы и пользователей.

tar -czvf phpbb.tar.gz /var/www/phpbb/*

Иногда встает задача удалить все кроме, это можно сделать просто с помощью rm

rm -rf !(config.php|files|store|images)

Перед тем как что-то удалить лучше убедится в том, что вы удаляете нужное. Это можно сделать через echo

echo !(config.php|files|store|images)

Если у вас не работает данная команда и ругается -bash: !: event not found, то нужно прописать

shopt -s extglob

Удаляем из каталога в котором находимся все кроме config.php, files, store, images. Если необходимо что-то более сложное можно воспользоваться find. Перед тем как удалить все убедитесь, что удаляете нужное, уберите флаг -delete.

find ./phpbb -path ./files -prune -o ! -name "*.php" -delete

Удаляем внутри папки phpbb все кроме папки files и всех файлов с расширением .php Консоль заставляет много писать, но так же и не забывает помогать в этом. Bash запоминает все команды, которые вы ввели ранее, для того чтобы искать в них можно нажать Ctrl + R и начать вводить, что-то из предыдущих команд. Для того чтобы искать дальше нажимает еще раз Ctrl + R. Есть еще очень много полезных утили, но сейчас все и не вспомнишь.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *