В очередной раз убедившись о том, что автоматический бекап — штука очень полезная и нужная, я решил задуматься о том, как мне упростить этот процесс. Для меня в первую очередь наибольшую ценность представляют различные конфиги вроде базы данных Миранды, базы паролей Keepass, медиатеки iTunes и кучи всякой другой мелкой шняги и мне очень нравится замечательный freemium-сервис DropBox, который позволяет автоматически отслеживать изменения файлов и делать их бекап, однако логика его работы предполагает скопировать все необходимые файлы в одну папку, что для хранения конфигов не очень хорошо подходит. Казалось бы, стоит подумать о другом способе решения, но мне почему-то очень хотелось привязаться именно к DropBox, поэтому я стал копать в этом направлении.
Собственно, решение очень простое — если DropBox хочет, чтобы все файлы, за которыми он должен следить, были в одной папки, надо это обеспечить. Поскольку перемещать конфиги нельзя, нужно, чтобы они были одновременно в двух местах. Задачу этой обеспечения этой квантовой неопределенности замечательно решают символьные ссылки, они же симлинки (если вы не знаете, что это такое, то советую по-подробнее прочитать об этом в википедии). Если читать влом, а что такое симлинки вы не знаете, то вкратце это такая штука, которая позволяет сделать разместить один файл в двух разных местах в файловой системе — т.е. именно то, что нам и нужно.
Вообще-то симлинки — это фишка файловой системы, и она характерна для UNIX-подобных операционок. Однако в Windows, начиная с NTFS 5 тоже есть такой функционал, поэтому если у вас Windows Vista или новее, то вы сможете разместить нужные вам файлы в папке DropBox, а там, где они должны быть дополнительно, нужно сделать симлинки.
Это делается с помощью команды mklink
Впрочем, если вы не очень любите командную строку Windows (да, да, я знаю, что все по-настоящему крутые чуваки вообще никогда не вылезают из командной строки, но иногда все-таки встречаются люди, которым GUI почему-то удобнее), то есть прекрасное решение. Это дополнение для к оболочке Windows Link Shell Extension, которое позволяет при помощи правого клика на файле сделать симлинк на него.
Необходимо сделать автоматический бэкап файла профиля Miranda. Он хранится на SD-карте, поэтому предварительно необходимо отформатировать ее в NTFS. Нужный файл необходимо скопировать в папку DropBox, а оригинал удалить.
После этого необходимо создать симлинк на хранящийся в папке DropBox файл.
Теперь на месте оригинального файла будет находиться симлинк, который будет указывать на файл, лежащий в папке DropBox:
Необходимо убедиться, что DropBox действительно увидел этот файл.
Для того, чтобы проверить, будет ли DropBox регистрировать изменения в файле, можно запустить Miranda, сделать какие-то изменения в настройках, и посмотреть на историю версий вашего файла.
Я никогда бы не додумался до этого решения, если бы на мои истеричные вопли в твиттере не окликнулись @Pushken_vbane, @Targence, @Bockra, @Afalina, @Pechkin1007, @Vykser. Спасибо вам, ребята.
Отдельная благодарность хабраюзеру baxtep2, который обратил внимание на особенности работы DropBox с симлинками и на то, что лучше в папке DropBox хранить оригиналы файлов, а симлинки положить туда, где до этого были сами файлы.
Disclaimer aka «Отмазка»
Безусловно, все действия, описанные ниже, являются банальными и интуитивно понятными любомупрофессионалунастоящему гику. Однако цель написания этого поста в первую очередь состоит в том, чтобы позднее можно было давать ссылку на сей труд тем, кто не столь глубоко разбирается в предмете, однако жаждет решить стоящую задачу без особенного геморроя. Кроме того, автор этого поста (то бишь я) боится через некоторое время забыть, каким именно способом он смог добиться решения задачи, и поэтому этот пост написан также для того, чтобы он (то есть я) всегда мог к нему обратится, и вспомнить, что же он (то есть я) делал.
Все, указанное ниже, имеет определенный смысл для любых ОС, в которых работает DropBox, однако в первую очередь имеется в виду Windows. Для Linux все подробно описано тут.
Решение
Собственно, решение очень простое — если DropBox хочет, чтобы все файлы, за которыми он должен следить, были в одной папки, надо это обеспечить. Поскольку перемещать конфиги нельзя, нужно, чтобы они были одновременно в двух местах. Задачу этой обеспечения этой квантовой неопределенности замечательно решают символьные ссылки, они же симлинки (если вы не знаете, что это такое, то советую по-подробнее прочитать об этом в википедии). Если читать влом, а что такое симлинки вы не знаете, то вкратце это такая штука, которая позволяет сделать разместить один файл в двух разных местах в файловой системе — т.е. именно то, что нам и нужно.
Вообще-то симлинки — это фишка файловой системы, и она характерна для UNIX-подобных операционок. Однако в Windows, начиная с NTFS 5 тоже есть такой функционал, поэтому если у вас Windows Vista или новее, то вы сможете разместить нужные вам файлы в папке DropBox, а там, где они должны быть дополнительно, нужно сделать симлинки.
Это делается с помощью команды mklink
MKLINK [[/D] | [/H] | [/J]] Ссылка Назначение
/D Создание символической ссылки на каталог.
По умолчанию создается символическая ссылка на файл.
/H Создание жесткой связи вместо символической ссылки.
/J Создание соединения для каталога.
Ссылка Имя новой символической ссылки.
Назначение Путь (относительный или абсолютный), на который ссылается
новая ссылка.
Впрочем, если вы не очень любите командную строку Windows (да, да, я знаю, что все по-настоящему крутые чуваки вообще никогда не вылезают из командной строки, но иногда все-таки встречаются люди, которым GUI почему-то удобнее), то есть прекрасное решение. Это дополнение для к оболочке Windows Link Shell Extension, которое позволяет при помощи правого клика на файле сделать симлинк на него.
N.B. Не пугайтесь, когда увидите, что у созданного вами файла-симлинка в папке будет указан нулевой размер, это нормально..
Пример со скриншотами
Необходимо сделать автоматический бэкап файла профиля Miranda. Он хранится на SD-карте, поэтому предварительно необходимо отформатировать ее в NTFS. Нужный файл необходимо скопировать в папку DropBox, а оригинал удалить.
После этого необходимо создать симлинк на хранящийся в папке DropBox файл.
Теперь на месте оригинального файла будет находиться симлинк, который будет указывать на файл, лежащий в папке DropBox:
Необходимо убедиться, что DropBox действительно увидел этот файл.
Для того, чтобы проверить, будет ли DropBox регистрировать изменения в файле, можно запустить Miranda, сделать какие-то изменения в настройках, и посмотреть на историю версий вашего файла.
Благодарности
Я никогда бы не додумался до этого решения, если бы на мои истеричные вопли в твиттере не окликнулись @Pushken_vbane, @Targence, @Bockra, @Afalina, @Pechkin1007, @Vykser. Спасибо вам, ребята.
Отдельная благодарность хабраюзеру baxtep2, который обратил внимание на особенности работы DropBox с симлинками и на то, что лучше в папке DropBox хранить оригиналы файлов, а симлинки положить туда, где до этого были сами файлы.