У меня есть папка a/и удаленная папка A/. Я теперь выполняю что-то вроде этого на Make-файле:
get-music:
rsync -avzru server:/media/10001/music/ /media/Incoming/music/
put-music:
rsync -avzru /media/Incoming/music/ server:/media/10001/music/
sync-music: get-music put-music
когда я делаю синхронизирующую музыку, это сначала получает весь diffs от сервера до локального и затем противоположного, отправляя весь diffs с локального на сервер.
Это работает очень хорошо, только если существуют только обновления или новые файлы на будущем. Если существуют удаления, это ничего не делает.
В rsync существует - удаляют, и - удаляют - после опций помочь выполнить то, что я хочу, но вещь, это не работает над 2 дорожными синхронизациями.
Если я хочу удалить файлы сервера на syn, когда локальные файлы были удалены, он работает, но если, по некоторым причинам (объяснил после) у меня есть некоторые файлы, которые не находятся в сервере, но существуют локально, и они были удалены, я хочу локально удалить их и не скопированный сервер (как это происходит).
Вещь, у меня есть 3 машины в контексте:
Так, иногда, сервер будет иметь файлы, которые были удалены с синхронизацией ноутбука, например, и затем, когда я выполняю синхронизацию со своим рабочим столом (где удаленные файлы сервера все еще существуют на), я хочу, чтобы эти файлы были удалены а не были скопированы снова в сервер.
Я предполагаю, что это только возможно с базой данных и дорожкой операций :P
Какие-либо простые решения?Спасибо.
Попробуйте Unison: http://www.cis.upenn.edu/~bcpierce/unison/
Синтаксис:
unison dirA/ dirB/
Unison спрашивает, что делать, когда файлы различаются, но вы можете автоматизировать процесс, используя следующую команду, которая принимает опции по умолчанию (не конфликтующие):
unison -auto dirA/ dirB/
unison -batch dirA/ dirB/
вообще не задает вопросов и пишет на выходе, сколько файлов было проигнорировано (потому что они конфликтуют).