Memento Mori в контексте сайтов

от
Прочее   блог сайта, размышления, потеря данных, бэкап

После недавней новости про удаление репозитория youtube-dl из GitHub, обострилось приглушённое чувство, что все сайты не вечны и что данные в одно мгновение могут исчезнуть.
   В случае с youtube-dl, это не исходный код. С ним как раз проблем нет, потому что клонированные репозитории с полной историей есть у многих контрибуторов проекта. А вот баг-трекер, обсуждение пул реквестов, история версий в релизах, это всё тоже важно. Хорошо, что существуют такие ресурсы как web.archive.org и кэш поисковиков, но даже при полном наличии страниц в них, нужно будет потратить время на восстановление.


Как потерять данные
   Потерять данные можно многими способами. Файлы могут удалить из-за нарушения авторских прав (привет, почти все популярные ресурсы интернета). Может случиться блокировка аккаунта и последующее удаление данных вместе с ним. Может истечь срок бездействия аккаунта спустя год (привет, Telegram): забыл пароль, потерял номер и всё, прощай список сохранённых сообщений.
   Сайты могут быть удалены в результате истечения средств на балансе хостинга. Могут быть потери данных в результате переезда на другой сервер. Или в результате ошибки (как программной, так и аппаратной). Ещё может сгореть дата-центр. Либо владелец примет решение об удалении какой-то части из-за устаревания или ненужности.

   Даже большие сайты теряют данные. MySpace, Dropbox и Google со своими отключениями сервисов. Последнее, что отключал Google — Google Play Музыка. При этом купленные альбомы он автоматически в YouTube Music не переносит, нужно действие пользователя: зайти по ссылке и нажать кнопку. А теперь вопрос, будет ли эта кнопка доступна через год, два или больше? Получить бэкап данных закрытого в 2013 году Google Reader уже нельзя: в Google Архиватор его уже нет, как и не будет скоро Google Play Music.
Не успел нажать кнопку = потерял данные.


Как не потерять свои данные
   В конечном итоге, размышления на тему последних событий с youtube-dl и последующего слива исходников гитхаба, привели меня к вопросу: "А что, если завтра гитхаба не будет?". Не "почему?", "когда?", "насколько вероятно?", а вот так легко и просто "что, если?".
   Что, если завтра моих данных на гитхабе не будет? Все ли мои репозитории уже сохранены? Нет ли ещё каких-то важных данных, как то баг трекера или гитхабовского канбана (Projects)? Ведь завтра гитхаба не будет, запросить бэкап станет невозможно. Есть ли в веб архиве и кэше поисковиков копии страниц?
shot-20201105T200720.png
17 августа 2020 года? Непорядок! Ведь с тех пор до… ах, погодите-ка:
shot-20201105T201332.png
У меня ничего нет. なにも、ないんだ

   Что, если завтра не будет дропбокса/Google Drive? Есть ли в этих облачных хранилищах какие-то файлы, которых нет на моём компьютере? Если такие файлы есть, доступны они ещё где-то помимо одного облачного хранилища? Может быть не помешает сделать копию, раз ещё есть свободное место?
   Что, если завтра не будет VK? Бэкап переписки сделан и лежит зашифрованный на дропбоксе и в ноутбуке, больше ничего важного на этом ресурсе нет. Хорошо.
   Что, если завтра не будет Evernote/Simplenote/Google Keep? Если сайта не будет, я смогу получить доступ к своим заметкам в приложениях? Проверить просто, достаточно отключить интернет и попытаться открыть в приложении какую-нибудь заметку с вложениями. Откроется — можно спать чуть спокойнее, не откроется — повод призадуматься.
   Что, если завтра не будет Telegram? Что, если завтра не будет YouTube? Что, если завтра не будет annimon.com? Что, если завтра не будет <подставьте свой любимый ресурс>?


  Как не потерять чужие данные
   Ответ простой — никак. Да, пессимистично, но всего не предскажешь. Большое количество бэкапов уменьшают шанс потери данных, но полностью достичь 0% потерь не удастся. Иногда случается просто невообразимая цепочка событий, так что даже в бэкапах нужные тебе данные исчезают.

   А ещё бывают случаи, когда бэкапы не помогут, потому что изначально закралась ошибка. Когда-то у нас был баг в резолвинге коллизий имён файлов при выгрузке: когда один пользователь выгружает файл 1.jpg, а потом второй пользователь выгружает другой файл 1.jpg. Для таких случаев мы использовали счётчик: первый файл сохранился бы под именем 1.jpg, а вот второй уже под именем 1_1.jpg. Счётчик хранился в текстовом файле и инкрементировался при каждом совпадении имён. В какой-то момент мы обнаружили, что файлы пропадают. Виной всему оказались права доступа на запись к файлу: обновлённое значение счётчика не записывалось и оставалось висеть на каком-то значении. В результате, последующая загрузка файла 1.jpg приводила к одному и тому же имени: 1_1.jpg и файл перезаписывался.
   Думаю, простой скрипт сравнения количества файлов в директории выгрузки с количеством записей в таблице файлов помог бы своевременно обнаружить проблему.


  Бонус
   Изначально я хотел запостить эту запись в дневники, так как ничего нового я всё равно здесь не сказал. Я лишь напомнил, что сайты тоже умирают и лучше лишний раз перестраховаться, чем однажды, набрав адрес своего любимого сайта, обнаружить, что он отсутствует, а вместе с ним и крупица ваших данных.
   Чтобы хоть немного добавить полезности статье, вот вам

   Прямые ссылки на страницы экспортирования данных популярных (и не очень) ресурсов
  — Google
  — Facebook
  — VK
  — GitHub
  — Twitter
  — Instagram
  — annimon.com
+8   8   0
175