Rsync — синхронизация

Настала очередь написать заметку об синхронизации файловой структуры (серверов, сайтов) посредством утилиты RSync.

 

По вводной мы синхронизируем два сервера, на которых стоит чудо-панель DirectAdmin. Так что придерживаемся правил панели ;)

пишем скрипт для синхронизации на одном из серверов, пихаем в крон:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/sh
if [ ! -f "/tmp/sync.swp" ]; then
touch /tmp/sync.swp
        ls /home | while read user;do
                if [ -d "/home/$user" ] && [ $user != "mysql" ] && [ $user != "ftp" ] && [ $user != "lost+found" ] && [  $user != "tmp" ]; then
                        if [ -d "/home/$user/domains" ];then
                                ls /home/$user/domains | while read domain;do
                                        echo "$user => $domain"
                                        echo /usr/bin/rsync -rlcptgov --delete-after root@_IP_:/home/$user/domains/$domain /home/$user/domains
                                done;
                        fi;
                fi;
        done;
rm -rf /tmp/sync.swp
fi;

Теперь пробежимся по параметрам rsync
l — пересоздание symlinks, это значит, что символические ссылки будут так же переноситься
z — использовать сжатие (сразу скажу — даже если мы грузим архивы, мы можем данный ключь, на результат работы не повлияет)
u — update. Обновление, он будет пропускать файлы которые новей, чем на удалённом сервере
o — установить владельца конечного файла таким же, как и у исходного
g — установить группу конечного файла таким же, как и у исходного
t — передача времени модификации и его обновление на удаленной системе. Этот ключ должен быть установлен для точной синхронизации
h — вывод информации на терминал в удобном для чтения (human-readable) виде
v — показывать информацию о ходе синхронизации. Просто по умолчанию rsync запускается в фоновом режиме. А с этим флагом будет работать как обычная программа и выдавать название каждого синхронизируемого файла. Так же можно написать -vv, тогда информации будет выдано еще больше..
r — рекурсивный режим
n — отладочный режим
a – режим архива. Заменяет ряд других ключей (-rlptgoD):
compress-level — уровень сжатия
delete-after — удалять файлы, которые не были найдены на удалённом сервере, “-after” означает, что удалить их нужно, только после окончания синхронизации. Так-же есть delete-before, delete-during, delete-excluded и просто delete

PS: материал писан для себя, источники — разные.