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: материал писан для себя, источники – разные.