Pull to refresh

Как я на домашнем компьютере файлы организовывал, синхронизировал и создавал резервные копии

Reading time 3 min
Views 33K


Впервые я столкнулся с проблемой захламления жестких дисков на компьютере в старших классах школы. Тогда я решил проблему структурированием всех своих документов при помощи Evernote, проставив нужные теги и перенеся все документы в этот чудо-софт. Все остальные файлы как лежали в куче, так и продолжили лежать.

В универе файлов стало еще больше, количество компьютеров дома возросло до 3 штук, я начал делать бэкапы. Пока просто, делая копии текущих папок на компьютере, не особо заморачиваясь с их структурой. Под конец обучения я задумался, стоит ли хранить огромное количество своих документов на внешних серверах. Подумав немного, решил, что лучше так не делать и решил слезть с иглы Evernote. Предварительно я продумал структуру хранения файлов на компьютере, чтобы даже без поиска легко найти нужную информацию. Каждой теме, которая меня интересовала, я создавал папку в /home/username папке. Это я называл категориями. Внутри каждой категории были подпапки-проекты, обязательной была папка misc практически в каждой папке, чтобы в файловом менеджере не видеть кучи беспорядочно наваленных неструктурированных файлов. Например, у меня были папки Bioinformatics/Aligner, Development/Projects/GameOfLife. Были четкие правила наименования файлов и папок (без нижних подчеркиваний, camelCase, папки с большой буквы, файлы с маленькой). Всё вроде было хорошо, но я ленился и не всегда красиво выкладывал файлики в нужные папки, что в конечном итоге привело к захламлению моей структуры. Я решил попробовать что-то другое…

Я решил поднять mediawiki на локалхосте, и синхронизировать её между двумя основными компами (один дома стационарный, другой ноут, который всегда с собой). Вся синхронизация всех папок, в которых хранились нужные файлы (да и бэкапы тоже) делались при помощи rsync. Когда я приходил домой, я запускал скрипт iCameHome.sh, который заливал все изменения на домашний комп, который одновременно был и сервером бэкапов (да и сейчас он тоже им является). Когда я уходил на работу, я запускал iWentOut.sh, который заливал изменения в обратную сторону. Всё вроде было хорошо, домашняя вики легко и непринужденно синхронизировалась, как и остальные папки на компьютере, которые я включил в rsync скрипт. Но я стал замечать, что чем дальше, тем меньше заполняю свою википедию, так как чтобы найти нужную статью, требуется какое-то время, несмотря на проставленные категории у статей. И мне всё сильнее не хочется это делать. Поиск в mediawiki мне не понравился, возможно я не дочитал и не допилил его. Но в принципе вот.

К чему я пришел. Мой план по переходу на новую систему структурирования файлов состоял из двух частей:

  • Настройка git сервака на домашнем стационарном компе
  • Виртуализация.


Первый пункт очень прост. Берем и ставим git-core, добавляем ssh ключ ноута в список доступных, запрещаем ssh доступ по паролю и открываем ssh порт стационарного компа наружу. Особо параноидальным личностям рекомендуется настроить port knocking. После этого, для каждой папки, которую необходимо синхронизировать создаем git репозиторий и коммитим в него с обоих компов — со стационарного и ноута, в зависимости от того, когда и где сделали изменения.

Второй пункт состоит в виртуализации рабочего пространства. Сначала я делаю типовые виртуалки: виртуалка с поднятым mysql + настроенной на меня IDE, виртуалкой для безопасного вебсерфинга, виртуалкой под какой-то определенный проект. После того, как виртуалка доводится до ума, делается полный её бэкап. Потом синхронизируются лишь папки проектов через git по способу, описанному выше. Вся работа идет в виртуалках, на хосте у меня остался Skype, Minecraft, Торрентокачалка и VLC плеер.

Какие плюсы данного решения?

  • Минимальные требования к хосту (касательно настроек). Нужен лишь virtualbox и git. Следовательно, не важно, под какой системой работать, можно легко экспериментировать.
  • git сервак поднимается одной командой, все остальные настройки, как я расписал выше тоже очень просты
  • Можно синхронизировать как все папки (добавив git pull для нужных репозиториев), так и отдельные папки проектов, сделав pull изнутри папки. С rsync здесь сложнее, так как надо лезть в общий скрипт и копировать команду, так как она длинная и всегда помнишь все пути до файлов.
  • Если нет возможности просинхронизировать репозиторий, то можно безопасно изменять файлики, добавлять, закоммитить локально, а потом сделать мердж
  • Есть история, любое удаление файла или потеря каких-то изменений будет записана. Можно проследить изменение файлов.


Минусы?

  • Возможно, будет сильно распухать история репозиториев, но пока ничего не могу сказать, перешел на такую систему только недавно.
  • Невозможность просинхронизировать файлы с телефонами/планшетами, но лично для меня это не нужно. Я пришел к тому, что на телефоне/планшете должны быть только те файлы, которые где-то уже есть еще на стационарном компьютере, так я обезопасил себя от потери файлов на мобильных устройствах


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

Tags:
Hubs:
+11
Comments 33
Comments Comments 33

Articles