Продвинутый синхронизатор файлов/папок

Задача: архив фотографий лежит на трех компах, хочется поддерживать все копии синхронизированном состоянии.Хотелось бы заиметь софтину/скрипт который:
1) находил, что изменилось и в каком порядке и проделовал это с другими копиями.(т.е. если я что-то изменил в 1, потом другое в 2, а потом еще что-нибудь в 3, то после синхронизации все изменения сохранились)
2) При синхронизации учитывал, что изменения часто заключаются в перемещении файлов/папок и вместо удаления в одном месте и качания в другое, то же бы перемещал
3) хранил базу хэшей(что бы можно было определить "битые" фотки)
Насколько я понимаю, 1) и 2) rsync не умеет
3) сейчас юзаю отдельную софтину

Или не стоит искать/делать такой велосипед, а вдумчиво и осторожно юзать rsync?

net-misc/unison

net-misc/unison
     Available versions:
        (2.13)  (~)2.13.16-r1
        (2.27)  2.27.57-r1
        (2.32)  (~)2.32.52
        {debug doc gtk +ocamlopt static threads}
     Homepage:            http://www.cis.upenn.edu/~bcpierce/unison/
     Description:         Two-way cross-platform file synchronizer

Я Gentoo & Funtoo

Похоже это то, что

Похоже это то, что нужно.
Сейчас буду пробовать.

duplicity? :)

duplicity? :)

dropboxhttps://www.dropbox.c

Было бы не плохо, но

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

в последнее время появился

в последнее время появился так называемый lan sync - синхронизирует между машинами одной сети напрямую

Почитал про него, мне

Почитал про него, мне кажется, что там предполагается бэкап, т.е. определенная папка - эталон и с ней синхронизируется другая - ее копия.(у меня все три равнозначны)

rsync!!!

rsync
Или subversion ;))

Working on Gentoo Linux for Asus P535 and Qtopia :-)

Уверены, что rsync догадается

Уверены, что rsync догадается о перемещенных файлах, а не будет их качать по новой?
Да и subversion, тоже не просечет фишки.

Просчет если перемещать через

Просчет если перемещать через svn mv

Working on Gentoo Linux for Asus P535 and Qtopia :-)

тогда уж лучше git =)

тогда уж лучше git =)

___________________________________________
Working on Gentoo for iPAQ hx4700 and Openmoko Neo Freerunner :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера

Если б, все можно было бы

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

Только что появилось в

Только что появилось в дереве, возможно, вас заинтересует

* sys-fs/unionfs-fuse
     Available versions:  (~)0.23
     Homepage:            http://podgorny.cz/moin/UnionFsFuse
     Description:         Self-syncing tree-merging file system based on FUSE

Я Gentoo & Funtoo

Спасибо, как-то сам я не

Спасибо, как-то сам я не подумал про unionfs.
Если она будет правильно и эффективно синхронизироваться, то это идеальный вариант в смысле прозрачности использования и минимизации административных действий.

Почитал, если я правильно

Почитал, если я правильно понимаю, то "Self-syncing" в данном случае означает, что синхронизируются только изменения сделанные в то время, когда все замонтировано, так, что к сожалению мне не подходит.

Продвинутый в юниксе может

Продвинутый в юниксе может быть только пользователь или администратор. )))

Если решать _проблему_ , то организуется NAS, готовый или из старого компа, сеть лучше всё же гигабитку -- коммутаторы и карточки недороги.

Если хотите "продвинуто" -- postgresql вам в руки и опять же централизованное хранение.

Файлы -- зло. Особенное зло -- это "Новая папка" Но "исходники/сэмплы" с карточек фотоаппаратов ("негативы") я бы все равно хранил в NAS

(Sir) * Windows looks like an open door, but no way to go *

NAS в чистом виде меня не

NAS в чистом виде меня не устраивает, т.к. одна из копий на ноуте, на нем не то, что гигабит, сеть есть не всегда. Основной комп включен только когда я дома, таким образом из сети доступен только "сервак".
Продвинуто - умнее, чем это делает rsync и при этом затраты моего времени заметно окупались простотой и надежностью софтины.

я же говорю юзай git =)

я же говорю
юзай git =)

___________________________________________
Working on Gentoo for iPAQ hx4700 and Openmoko Neo Freerunner :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера

Думаю, что коммит будет много

Думаю, что коммит будет много памяти отъедать...
Хотя бекап файлов на 4 гига пока делается нормально... =)

Я тоже не уверен, что

Я тоже не уверен, что ресурсов хватит, сейчас объем около 95Гб(50тыщ файлов), а один из компов Пень 3 800МГц и 512 оперативки.
Но все равно попробую git, вроде bazaar и mercurial тоже подходят.

Попробовал, сразу наткнулся

Попробовал, сразу наткнулся на подводные камни, о которых не подумал: git хранит у себя(.git) копию архива фоток(в удобном для него виде), а рядом лежит, то же самое только в исходном виде. Т.е. вес удваевается и так будет на каждом компе - это меня конечно не устраивает и к сожалению, как мне думается, так будет с любой системой контроля версий :(

Человек -- существо

Человек -- существо непредсказуемое, компьютер туп по определению. Надеятся на разум или продвинутость программы -- впадать в иллюзию. Результат -- потеря данных.
Есть такая краеугольная "треугольная" зависимость: качественно -- быстро -- дешево. Одновременно можно выбрать (иметь) только два из трех параметров.

Решать Вам.

(Sir) * Windows looks like an open door, but no way to go *

я не требую от синхронизатора

я не требую от синхронизатора ИИ, только проделать с файлами/папками других копий те же манипуляции, что и я(В не тривиальных случаях спросить у меня, что делать).
Это я понимаю, вот и ищу оптимум где-то в центре треугольника )

Похоже, что проблема не в

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

Вот только существует ли такое для *nix?

Это ближе в реляционным базам данных.

Системы контроля версий - это вообще из другой оперы. Они не удаляют данные в принципе. То есть любое ошибочное помещение данных (даже повторное) приводит к бесполезной и необратимой потере дискового пространства.

По поводу специальных ФС,

По поводу специальных ФС, можно подробнее название или ссылку, сейчас даже не представляю, что в запрос гуглу писать.

Системы контроля версий созданы для другого, но если хранить только одну версию(последнюю), то получается продвинутый синхронизатор. Про GIT написано, что ему на имена пофиг, он на содержимое ориентируется, вроде бы bazaar и mercurial тоже.

Kevol написал(а): То есть

Kevol написал(а):
То есть любое ошибочное помещение данных (даже повторное) приводит к бесполезной и необратимой потере дискового пространства.

Если svn mv то ничего не теряется и место не растёт. Все современные системы контроля версий хранят разницу!

Working on Gentoo Linux for Asus P535 and Qtopia :-)

_SerEga_ написал(а): Задача:

_SerEga_ написал(а):
Задача: архив фотографий лежит на трех компах, хочется поддерживать все копии синхронизированном состоянии.Хотелось бы заиметь софтину/скрипт который:
1) находил, что изменилось и в каком порядке и проделовал это с другими копиями.(т.е. если я что-то изменил в 1, потом другое в 2, а потом еще что-нибудь в 3, то после синхронизации все изменения сохранились)
2) При синхронизации учитывал, что изменения часто заключаются в перемещении файлов/папок и вместо удаления в одном месте и качания в другое, то же бы перемещал
3) хранил базу хэшей(что бы можно было определить "битые" фотки)
Насколько я понимаю, 1) и 2) rsync не умеет
3) сейчас юзаю отдельную софтину

Или не стоит искать/делать такой велосипед, а вдумчиво и осторожно юзать rsync?

Для очень(совсем) извращенцев mysqlfs )) + настроенная репликация на 3-х серверах.
Вся файловая лежит в БД MySQL, MySQL ведет лог что делается с файлами (удалили, переместили, создали новый, переименовали) и при первой же возможности синхронизирует с репликами.
Минусы: работает медленно (тестил на 2*Xeon 2.4),
бинарный журнал занимает место, причем по началу столько же, сколько и сама база.

Нет, спасибо. Хранить файлы в

Нет, спасибо. Хранить файлы в БД даже читать такое страшно страшно )

Может есть прога или ФС поддерживающая логирование действий над файлами?

А то Фс- любая линуксовая,

А то
Фс- любая линуксовая, ибо inotifu никто не отменял
прога - icron для примера (было ешше что то)

П.С Ми искал такую же фигню для сшадов копи в линукся

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Спасибо, то, что нужно. Ядро

Спасибо, то, что нужно.
Ядро пересоберу с поддержкой inotify и буду разбираться.

incrond - почти бесполезен,

incrond - почти бесполезен, т.к. надо на каждую папку(включая подпапки) ставить правила отдельно
зато inotifywait из inotify-tools - работает как надо:

inotifywait -m -q -r -e create --format %w%f /home/ > created_files.txt

и список новых файлов готов

А может и мне подскажете.

А может и мне подскажете. Проблема вот какая - нужно всё тоже самое, но без доступа к сети. Совсем.

У меня есть три рабочих компьютера в разных местах, а сети нет. Нужно синхронизировать данные.
Сейчас я делаю так. Беру флешку, на которой содержится копия всех данных. Приходя на работу копирую файлы на жёсткий диск с обновлением "cp -upR ...", ну или "rsync -av ...". А уходя копирую обратно. С данными ключами копируются только обновлённые данные.
Проблема даже не в том, что при удалении файла он потом "воскресает".
Мне бы хотелось на флешке хранить не весь набор файлов, а только разницу. То есть, для трёх рабочих мест на флешке держать список файлов с характеристиками и контрольной суммой, а при изменении оных программа должна копировать изменённый файл на флешку и обновлять их на остальных компьютерах при первой возможности. После обновления файла везде естественно с флешки его удалять.
Как применить в данном ключе готовые утилиты, например, системы контроля версий, я не придумал. Всё, что видел, основывается на связи через сеть. А мне в качестве основы нужена флешка со списком файлов.

К этому близка rsync - эта программа внутри создаёт некий список файлов с их параметрами, сравнивая его с файлами на удалённом конце. Вот если бы вклиниться в середину этой процедуры, сделать работу rsync "отложенной", разделённой на два этапа с хранением промежуточных результатов в файле - было бы самое оно.

$BOC(\pi, e)$

bindiff?

bindiff?

Working on Gentoo Linux for Asus P535 and Qtopia :-)

Попробуйте inotifywait из

Попробуйте inotifywait из inotify-tools. С его помощью можно легко получить списки удаленных, новых и измененных файлов.(все хорошо, только нужно вовремя включать/выключать)
Если смиритесь с наличием всех файлов на флэшке, то попробуйте git(или bazaar, или mercurial): там будет полная автоматизация и никаких лишних или пропущенных файлов(т.к. будут контрольные суммы считаться). Есть минусы: места надо в 2 раза больше.

"отложеннsй" rsync - сохранять дерево папок в файлы(с разных компов), а потом прогонять через diff

мысли в тему.

Сам с давнего времени озадачен проблемой работой с фото.
Есть несколько специфических свойств задачи.
1. Фотография должна обязательно иметь оригинал, к которому всегда можно вернуться.
2. Фотография может быть скрыта от постороннего взгляда
3. Фотография может быть удалена из архива безвозратно (откровенный брак)
4. Набор всех фотографий должен иметь неединственное отображение.
5. Набор фотографий будет постоянно пополняться.
7. Любая фотография может быть отредактирована для любого набора, причем это редактирование должно оказывать влияние на другие наборы отображения ( по желанию ). Причем, на каждый в отдельности. Плюс! оригинал должен остаться нетронутым.
8. Система хранения должена иметь возможность сырого доступа. (Для модификации скриптами).

Все рассмотренные программы страдают ущербностью. Зачастую идет виндовый подход, который учитывает отсутствие линков в файловой системе. Многие программы бессоветсно модифицируют оригинал.

Очень близко к решению данной проблемы - системы контроля версий.
Но они отрицают пункт 3 и, как указывалось выше, при извлечении рабочей копии удваивают объем.

Самым оптимальным, на мой взгляд, было бы хранение в рамках файловой системы. Где оригиналы помещаются в отдельный каталог, доступ на изменение которого ограничиватеся правами; отображения состоят древовидных каталогов и ссылок на оригиналы. А в случае модификации производится замещение ссылки на реально измененный файл.
Никакой программы осуществляющий данный подход мне не встретилось.
Для себя на данный момент вижу едиственный выход -- использование svn + отбраковка фотографий до внесения в архив + нарезка исходников фотографий на тома малого объема.
Но и здесь есть подводный камень. Не у всех пользователей архива достаточно квалификации (или желания ее получить) для управления через интерфейс SVN.

http://habrahabr.ru/blogs/sys

http://habrahabr.ru/blogs/sysadm/8156/ ?
только дочитайте до конца. оффлайн клиентов тоже поддерживается.

P.S.: Linux - это красная таблетка :-) Windows - синяя...

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".