Символічні посилання у бекапах
Nov. 13th, 2014 04:13 pmНещодавно завершив сортування свого фотоархіву за принципом «країна—штат/регіон—місто/село/об’єкт природи/рік/місяць-назва поїздки». Тепер стало набагато легше шукати фотки, адже раніше сортування було за роком, а покладався я на свою пам’ять. Зробив я це за допомогою символічних посилань: я не користуюся ніякою програмою для керування фотографіями, а навіть якби користувався, хочеться від неї незалежності, а тому немає нічого ліпшого, ніж скористатися файловою системою.
Однак виникає проблема збереження символічних посилань у бекапах: ті системи, якими користуюся я (Diino та Dropbox), не зберігають символічних посилань: вони заходять в них і архівують усе, шо всередині. У Дропбокса це взагалі ключова фіча: шоб забекапити якийсь каталог чи файл, досить кинути символічне посилання на нього у теку ~/Dropbox. Тобто символічне посилання перетворюється у звичайний файл або каталог, шо може призвести до подвійного бекапу того самого файлу, якщо вчасно не подбати про це.
Однак шо робити, якщо хочеться зберегти символічні посилання саме як символічні посилання, аби в день Х їх можна було б повернути назад?

Конкретно в моєму випадку мені допоміг tar i невеличкий лікнеп по ньому — «How to preserve symbolic links with tar command».
Отже:
1. Створюємо в папці з країнами скриптик archive.sh:
2. Там же зберігаємо скриптик для розархівування, шоб якщо знадобиться через 10 років, не шукати в гуглі, які ключі для tar-а юзати:
3. Вуаля, блять! Тепер можна це додати в cron для автоматичного бекапу, а можна і вручну запускати.
Тепер треба подумати над більш універсальним рішенням, яке б шукало всі символічні посилання на диску і запакувало б їх у єдиний tar (find вміє шукати символічні посилання?). Ну але поки шо відклав це на потім.
Однак виникає проблема збереження символічних посилань у бекапах: ті системи, якими користуюся я (Diino та Dropbox), не зберігають символічних посилань: вони заходять в них і архівують усе, шо всередині. У Дропбокса це взагалі ключова фіча: шоб забекапити якийсь каталог чи файл, досить кинути символічне посилання на нього у теку ~/Dropbox. Тобто символічне посилання перетворюється у звичайний файл або каталог, шо може призвести до подвійного бекапу того самого файлу, якщо вчасно не подбати про це.
Однак шо робити, якщо хочеться зберегти символічні посилання саме як символічні посилання, аби в день Х їх можна було б повернути назад?

Конкретно в моєму випадку мені допоміг tar i невеличкий лікнеп по ньому — «How to preserve symbolic links with tar command».
Отже:
1. Створюємо в папці з країнами скриптик archive.sh:
#!/bin/bash
tar -czvf Sorted_by_country_symlinks.tar.gz *
mv Sorted_by_country_symlinks.tar.gz ~/Dropbox/
2. Там же зберігаємо скриптик для розархівування, шоб якщо знадобиться через 10 років, не шукати в гуглі, які ключі для tar-а юзати:
#!/bin/bash
tar -xhzvf Sorted_by_country_symlinks.tar.gz
3. Вуаля, блять! Тепер можна це додати в cron для автоматичного бекапу, а можна і вручну запускати.
Тепер треба подумати над більш універсальним рішенням, яке б шукало всі символічні посилання на диску і запакувало б їх у єдиний tar (find вміє шукати символічні посилання?). Ну але поки шо відклав це на потім.