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

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


rsync

Розбіжності

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

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

Both sides previous revision Попередня ревізія
Наступна ревізія
Попередня ревізія
rsync [2013/06/14 22:25]
wombat [Авторизация] rsyncd.secrets file added
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/
 +
 +
 +
 +