Обратился ко мне один знакомый с “проблемой” – умер диск на dedicated, хостинг откатил бекап, но сайт лежит и информацию “вытащить” с него обычными способами получить не удается, а есть необходимость сохранить базу контактов пользователей. Задача относительно простая, за исключением одного но – есть только shell, а код никто не знает.
Закапываемся в код – php, что уже проще, структура папок подсказывает, что фреймворк использовали, который уже “умер”. Но тем не менее нахожу, что доступ к mysql, которого не было, не нужен (ура!) – инфо лежит в mongodb (первый раз вижу этого “зверька”). Как результат – “американские горки” настроения продолжаются.
Устанавливаю mongodb – пытаюсь просмотреть базу, там, где она лежит, но ничего не отображается (разбираюсь, что это – логично, ведь в настройках прописан путь, где искать базы). Копирую файлы в нужную папку, но все равно ничего не отображается. Еще какое-то время разбираюсь с тем, что мне нужно изменить права на файлы, чтобы пользователь mongodb имел и ним доступ. Бинго! Доступ получен, но информацию сложно назвать удобно читабельной, а тем более, копируемой. Следующий шаг – экспортировать из mongo во что-то более читабельное. Нахожу, что по умолчанию mongoexport поддерживает json/csv, но, к сожалению, в csv по какой-то причине экспортировать коллекцию не удалось. Ок, будем двигаться дальше с json! Экспорт в него, потом cd /var/www и скопировать файл в него, чтобы можно было скачать для работы локально.
Следующий вызов – как из JSON получить список email адресов, ведь “чистым” этот файл не назовешь. Пытаюсь через Google Sheets, но из-за того, что в файле были и пустые поля для email адресов, то скрипт (https://github.com/bradjasper/ImportJSON) не хотел работать. Начинаю “чистить” файл руками в Sublime Text и нахожу параллельно Pretty JSON для Sublime (https://blog.adriaan.io/sublime-pretty-json.html). Теперь уже намного лучше, но все равно не идеально. Еще часик работы с сортировкой по алфавиту, чтобы выловить лишнюю инфо и текстовый файлик на 150 кб готов, а клиент приятно удивлен.