Як я на домашньому комп'ютері файли організовував, синхронізував і створював резервні копії



Вперше я зіткнувся з проблемою захаращення жорстких дисків на комп'ютері в старших класах школи. Тоді я вирішив проблему структуруванням всіх своїх документів за допомогою 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 тут складніше, бо треба лізти в загальний скрипт і копіювати команду, так як вона довга і завжди пам'ятаєш всі шляхи до файлів.
  • Якщо немає можливості просинхронизировать репозиторій, то можна безпечно змінювати файлики, додавати, закоммитить локально, а потім зробити мердж
  • Є історія, будь видалення файлу або втрата якихось змін буде записана. Можна простежити зміну файлів.


Мінуси?

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


Буду радий почути в коментарях, хто як вирішує проблему резервного копіювання і синхронізації даних між пристроями.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.