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

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


rsync

Розбіжності

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

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

Порівняння попередніх версійПопередня ревізія
Наступна ревізія
Попередня ревізія
rsync [2013/06/14 19:25] – [Авторизация] rsyncd.secrets file added wombatrsync [2014/10/09 07:32] (поточний) – [Полезные команды] via SSH on different port wombat
Рядок 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/
 +
 +
 +
 +