Користувальницькькі налаштування

Налаштування сайту


rsync

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Наступна ревізія
Попередня ревізія
rsync [2012/03/27 15:15]
wombat Создание страницы
rsync [2014/10/09 10:32] (поточний)
wombat [Полезные команды] via SSH on different port
Рядок 1: Рядок 1:
 +====== Синхронизация каталогов с помощью rsync ======
 +
 +Cоздание и регулярное обновление резервных копий файлов и папок
 +
 +rsync -rvt --delete-after --dry-run /​media/​flas/​work /home/user
 +
 +rsync -rvt --delete-after --dry-run /​home/​user/​work /​media/​flash
 +
 +===== Потеря данных при синхронизации с файловой системой FAT =====
 +
 +Обратите внимание,​ что в силу особенностей разных файловых систем,​ при синхронизаци каталогов между //​разными//​ файловыми системами (скажем,​ на компьютере используется ФС Ext3, а на флэшке - FAT) могут возникнать различные проблемы,​ нередко приводящие к потере данных.
 +
 +К примеру,​ из-за того, что ФС Ext3 различает заглавные буквы и сточные (вы можете иметь 2 разных файла с именами "​file.txt"​ и "​File.txt"​ в одном каталоге),​ а ФС FAT не различает (имена "​File.txt"​ и "​file.txt"​ считаются одинаковыми),​ при попытке записать файлы с одной системы на другую (Ext3 --> FAT) велика вероятность потери данных перезаписью.
 +
 +Кроме того, возникают порой и просто неадекватные на первый взгляд эффекты. К примеру,​ у вас есть на сменном носителе (флэшке с фС FAT) папка "​MyWork"​. Вы произвели синхронизацию с компьютером,​ и получили точно такую же папку на жёстком диске. После этого вам понадобилось переименовать её "​MyWork"​ --> "​mywork"​. Попытка произвести затем обратную синхронизацию файлов на флэшке с жёстким диском одной из команд,​ рассмотренных выше, приведёт к удалению с флэшки папки "​MyWork",​ но новая папка "​mywork"​ при этом там не появится (**!**). То есть вы будете наивно полагать,​ что на флэшке у вас точная копия дерева каталогов,​ хранящегося на жёстком диске, а на самом деле там может чего-то (или даже многого) не хватать.
 +
 +Почему это происходит?​
 +
 +При использовании опции "//<​nowiki>​--delete-after</​nowiki>//"​ удаление лишних файлов производится только после полного копирования обновляемых файлов. То есть при первом проходе //rsync// копирует файлы, требующие обновления,​ а при втором - удаляет файлы, отсутствующие в исходной файловой системе.
 +
 +Таким образом,​ при первом проходе папка "​mywork"​ будет скопирована на флэшку,​ а при втором проходе будет удалена папка "​MyWork",​ которой больше нет на жёстком диске компьютера (поскольку вы её переименовали),​ и которая для ФС FAT является тождественной свежескопированной папке "​mywork"​.
 +
 +Возможные решения:​
 +
 +  * Запускать синхронизацию дважды. При первом запуске получится то, что описано выше, а при втором каталогов с такими именами уже не будет вовсе (ведь оба они будут удалены к тому времени),​ и **//​rsync//​** скопирует всё недостающее;​
 +  * Вместо параметра "//<​nowiki>​--delete-after</​nowiki>//"​ использовать параметр "//<​nowiki>​--delete-before</​nowiki>//"​ (удалять существующие файлы **до** копирования обновлённых). Однако,​ у этого режима есть тот недостаток,​ что в определённых случаях //​rsync//'​у может не удаться скопировать обновлённые файлы после удаления существующих,​ и вы снова-таки останетесь без необходимых файлов.
 +  * Вместо параметра "//<​nowiki>​--delete-after</​nowiki>//"​ использовать параметр "//<​nowiki>​--delete-during</​nowiki>//"​ (удалять сущесвующие файлы **во время** обновления). При таком режиме подлежащие удалению файлы удаляются прямо "на ходу",​ т.е. во время обновления каждого конкретного файла.
 +
 +**Замечание:​** Все вышеперечисленные приёмы могут помочь только в случае,​ если вы, к примеру,​ переименовали папку "​MyWork"​ в "​mywork"​ на одном из носителей. В случае,​ если у вас есть **обе** папки ("​MyWork"​ и "​mywork"​) в одном каталоге с разным содержимым,​ вам не удастся создать такие же 2 разные папки в одном каталоге на файловой системе FAT.
 +
 +Поэтому старайтесь в каталогах,​ предназначенных для синхронизации через другие файловые системы (как то FAT на флэшках),​ не держать вложенных файлов и папок, различающихся только регистром букв. Лучше сразу назвать их по-разному.
 +
 +====== rsync-сервер ======
 +
 +По умолчанию демон rsyncd прослушивает порт **873**
 +
 +===== Авторизация =====
 +
 +Образец конфигурационного файла
 +
 +<file conf rsyncd.conf>​
 +#                                                                               
 +# /​etc/​rsyncd.conf ​                                                             ​
 +#                                                                               
 +                                                                                ​
 +pid file = /​var/​run/​rsyncd.pid ​                                                 ​
 +log file = /​var/​log/​rsyncd.log
 +
 +[data] ​                                                                         ​
 +    path = /​mnt/​data/ ​                                                          
 +    comment = /mnt/data/ on MyServerName ​                                              
 +    auth users = user1 user2 user3                                                          ​
 +    uid = localuser
 +    gid = localgroup
 +    secrets file = /​etc/​rsyncd.secrets ​                                         ​
 +    read only = no
 +
 +# End of file 
 +</​file>​
 +
 +<file conf rsyncd.secrets>​
 +user1:​password1
 +user2:​password2
 +user3:​password3
 +</​file>​
 +====== Полезные команды ======
 +
 +  rsync -rit --delete-during /​home/​user/​work /​media/​flash
 +
 +  rsync --recursive --itemize-changes --times --delete-during /​home/​user/​work /​media/​flash
 +
 +===== rsync через SSH =====
 +
 +Если SSH работает не на порту по умолчанию,​ а на каком-либо другом (в нашем примере - 2222), команду rsync надо задавать так:
 +
 +  rsync --dry-run -ruit --rsh='​ssh -p2222'​ remotehost:​~/​MyWork/​ MyWork/
 +
 +
 +
 +