Назад | Перейти на главную страницу

Как игнорировать ошибки с помощью Unison?

Я пытаюсь синхронизировать два каталога с помощью Unison, однако, если он встречает файл с ошибкой, он пропускает весь каталог! Я не верю, что следует пропускать весь каталог, вместо этого следует просто пропустить этот файл. Я согласен с этим. Как мне сказать ему, чтобы он игнорировал ошибку и продолжал копировать остальные файлы?

Unison - это исполняемый файл Windows, а не Cygwin. Я могу прочитать файл с помощью Cygwin. Unison действительно обнаруживает ошибку в файле, и я не против их пропустить.

Версия 2.32 работает лучше 2.40. Версия 2.40 даже не запускается.

Я пробовал добавить -ignore, но это не помогает. Вот что я пробовал:

$ unison 'c:\cygwin' 'socket://xps:4321/c:/cygwin'
UNISON 2.32.52 started propagating changes at 02:53:35 on 27 Feb 2013
[ERROR] Skipping etc
  [root 1]: Error in digesting c:/cygwin/etc/ssh_host_dsa_key:
c:/cygwin/etc/ssh_host_dsa_key: Permission denied
[ERROR] Skipping home
  [root 1]: Error in digesting c:/cygwin/home/SYSTEM/.bash_history:
c:/cygwin/home/SYSTEM/.bash_history: Permission denied
...
Saving synchronizer state
Synchronization complete at 02:53:39  (3 items transferred, 2 skipped, 0 failed)
  skipped: etc
  skipped: home




$ unison 'c:\cygwin' 'socket://xps:4321/c:/cygwin' -ignore 'Path etc\ssh_host_dsa_key' -ignore 'Path home\SYSTEM\.bash_history'
Contacting server...
Connected [//dumbopc/c:/cygwin -> //xps/c:/cygwin]
Looking for changes
  Waiting for changes from server
Reconciling changes
local          xps
         error            etc
[root 1]: Error in digesting c:/cygwin/etc/ssh_host_dsa_key:
c:/cygwin/etc/ssh_host_dsa_key: Permission denied
         error            home
[root 1]: Error in digesting c:/cygwin/home/SYSTEM/.bash_history:
c:/cygwin/home/SYSTEM/.bash_history: Permission denied
...
Proceed with propagating updates? [] g
Propagating updates    
UNISON 2.32.52 started propagating changes at 04:11:26 on 27 Feb 2013
[ERROR] Skipping etc
  [root 1]: Error in digesting c:/cygwin/etc/ssh_host_dsa_key:
c:/cygwin/etc/ssh_host_dsa_key: Permission denied
[ERROR] Skipping home
  [root 1]: Error in digesting c:/cygwin/home/SYSTEM/.bash_history:
c:/cygwin/home/SYSTEM/.bash_history: Permission denied
...
UNISON 2.32.52 finished propagating changes at 04:11:28 on 27 Feb 2013
Saving synchronizer state
Synchronization complete at 04:11:30  (6 items transferred, 2 skipped, 0 failed)
  skipped: etc
  skipped: home



# Version 2.40
C:\Program Files\Unison>"Unison-2.40.102 Text.exe"  'c:\cygwin' 'socket://xps:4321/c:\cygwin'
Contacting server...
Fatal error: Wrong number of roots: 2 expected, but 4 provided ('c:\cygwin', 'socket://xps:4321/c:\cygwin', , )
(Maybe you specified roots both on the command line and in the profile?)


@REM DOS
C:\cygwin\etc>type ssh_host_dsa_key
Access is denied.

# Cygwin
$ ls -l /etc/ssh_host_dsa_key
-rw------- 1 SYSTEM None 668 Aug 30  2010 /etc/ssh_host_dsa_key

$ cat /etc/ssh_host_dsa_key
-----BEGIN DSA PRIVATE KEY-----

Справка по командной строке:

http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html#prefs

Я отказался от Unison. Я переключился на Synchronize It, который сохраняет время модификации и работает в 10 раз быстрее. Однако он не распространяет удаление в обоих направлениях.

Синхронизируйте это: http://www.grigsoft.com/wndsync.htm

Также по поводу ошибки

Wrong number of roots: 2 expected, but 4 provided

смотреть на $HOME/.unison/default.prf или %HOME%\.unison\default.prf, проверьте, есть ли строки, начинающиеся сroot= и удалите их или переместите в другой профиль. Если есть другие строки, вы можете просмотреть их, чтобы проверить, подходят ли они для вашего случая. (Помимо некоторых надуманных случаев, когда можно быть уверенным, что они когда-либо синхронизируют только один набор деревьев каталогов, default.prf должны содержать только параметры, а не корневые спецификации.)

Тем не менее, вы можете создавать и использовать профили (.prf файлы в каталоге .unison), которые указывают корни дерева каталогов для синхронизации. Любой профиль может включать других и даже include default. Последний случай удобен, чтобы поделиться набором параметров, которые вы хотите применить ко всем своим профилям, и даже когда unison запускается без указания профиля в командной строке. Подробнее см. Документация Unison - Профили.