Это недостатки Unison:
При синхронизации двух каталогов Cygwin в Windows он повреждает символические ссылки, которые использует Cygwin, и портит содержимое:
C:\Program Files\Unison>"Unison-2.40.102 Text.exe" c:\cygwin socket://xps:4321/c:\cygwin -path bin UNISON 2.40.102 started propagating changes at 03:32:12.55 on 28 Feb 2013 [BGN] Updating file bin/X from C:/cygwin to //xps/C:/cygwin $ ls -l /bin/X //xps/c/cygwin/bin/X -rwxr-xr-x+ 1 Administrators ???????? 19 Feb 28 03:32 //xps/c/cygwin/bin/X lrwxrwxrwx 1 Chloe None 8 Jan 28 18:35 /bin/X -> XWin.exe $ stat /bin/X //xps/c/cygwin/bin/X File: `/bin/X' -> `XWin.exe' Size: 8 Blocks: 1 IO Block: 65536 symbolic link Device: f8e5edb8h/4175818168d Inode: 1125899907027010 Links: 1 Access: (0777/lrwxrwxrwx) Uid: ( 1006/ Chloe) Gid: ( 513/ None) Access: 2013-01-28 18:35:38.648870400 -0500 Modify: 2013-01-28 18:35:38.648870400 -0500 Change: 2013-01-28 18:35:38.648870400 -0500 Birth: 2013-01-28 18:35:38.648870400 -0500 File: `//xps/c/cygwin/bin/X' Size: 19 Blocks: 1 IO Block: 65536 regular file Device: 808a8f0bh/2156564235d Inode: 4222124650737757 Links: 1 Access: (0755/-rwxr-xr-x) Uid: ( 544/Administrators) Gid: (4294967295/????????) Access: 2013-02-28 03:32:20.619899500 -0500 Modify: 2013-02-28 03:32:20.619899500 -0500 Change: 2013-02-28 03:32:20.629884400 -0500 Birth: 2013-02-26 13:21:32.963302500 -0500
Обратите внимание на изменение размера и разрешений? На целевом компьютере при попытке выполнить команду происходит сбой:
Chloe@xps /usr/bin $ X bash: ./X: cannot execute binary file
Я должен использовать rsync для правильного копирования символических ссылок.
$ rsync -arvz /cygdrive/c/cygwin/bin/ //xps/c/cygwin/bin sending incremental file list ./ X -> XWin.exe
Еще одним недостатком является то, что Unison НЕ сохраняет измененное время по умолчанию (однако можно использовать -times
опцию, чтобы настроить синхронизацию времени изменения файла в унисон)! Если вы синхронизируете, измененное время будет установлено на время создания файла в месте назначения:
$ unison 'c:\Sites' '\\xps\c\Sites' ... new file ----> ruby-env.sh ... [BGN] Copying ruby-env.sh from c:/Sites to //xps/c/Sites [END] Copying ruby-env.sh $ ls -l ruby-env.sh //xps/c/sites/ruby-env.sh ----------+ 1 ???????? ???????? 188 Feb 28 02:48 //xps/c/sites/ruby-env.sh -rw-r--r--+ 1 Chloe None 188 Feb 27 03:06 ruby-env.sh
Теоретически, вы можете потерять данные, если вы
- Имейте 2 синхронизированных местоположения файла, Location1, Location2,
- Изменить синхронизированную копию файла во втором месте,
- Синхронизировано с Unison между 1-м местоположением и 3-м местоположением,
- создал файл в 3-м месте назначения с более новой датой изменения из-за Unison,
- использовал другой инструмент синхронизации, такой как rsync или SyncToy,
- затем снова синхронизировал 3-е место назначения со 2-м местоположением, которое было фактически изменено позже, чем 1-й источник, но до времени создания файла 3-го места назначения,
- Другой инструмент синхронизации заметит, что время 3-го местоположения новее, и перезапишет изменения во втором местоположении,
- Тем самым теряя данные.