Статья о программе для синхронизации файлов и каталогов Rsync
Rsync это программа для синхронизации файлов и каталогов с минимизацией трафика.
Rsync может быть запущен в режиме сервера для организации передачи файлов клиентам через порт и в режиме консольной файловой команды.
Порт используемый RSYNC-сервером по умолчанию TCP/873.
Установка
- в командной строке: следует выполнить команду # apt-get install rsync
- в графическом режиме: воспользоваться специализированной программой управления пакетами
После установки пакет готов к использованию.
Некоторые часто используемые команды
# rsync --daemon - запуск rsync-сервера вручную с файлом конфигурации по умолчанию /etc/rsyncd.conf
# /etc/init.d/rsync restart - перезапуск rsync-сервера (при настройке запуска в режим демона)
# rsync [options] /source/ /target/ - выполнение синхронизации содержимого каталога target из каталога source
Настройка RSYNC-сервера
RSYNC-сервер позволяет организовать передачу файлов клиентам через откраиваемый программой порт.
RSYNC-сервер может быть запущен вручную или автоматически при старте операционной среды.
Для запуска RSYNC-сервера вручную с произвольным файлом конфигурации может быть использована команда
# rsync --daemon --config=FILE
Для включения автозапуска сервера Rsync следует
- в файл /etc/default/rsync добавить параметры
RSYNC_ENABLE=true
где переменная RSYNC_ENABLE может принимать значения:
false - запретить запуск сервера rsync,
true - запускать самостоятельный сервер rsync
inetd - запускать сервер rsync при необходимости из супер-сервера inetd.
RSYNC_CONFIG_FILE=/etc/rsyncd.conf
если параметр не указан файл конфигурации будет считываться из /etc/rsyncd.conf,
кроме тех случаев, когда rsync запускается поверх удаленной оболочки и не от
суперпользователя. В этом случае выбирается rsyncd.conf из текущего каталога
на удаленной машине (обычно $HOME).
RSYNC_OPTS=opts
добавление особенных (отличных от устанавливаемых по умолчанию) параметров запуска
например, может быть указан адрес и/или порт, на котором следует принимать соединения
"--address=192.168.0.10" (по умолчанию - все локальные адреса)
"--port=8730" (по умолчанию - 873), чтобы указать на каком порту следует принимать соединения
RSYNC_NICE=level
изменение приоритета процесса в планировщике задач
- и перезапустить rsync-сервер.
В файле конфигурации rsyncd.conf могут быть использованы параметры
uid = rsyncd
Идентификатор пользователя, от имени которого запускается rsync-сервер.
gid = mirror
Идентификатор группы, от имени которой запускается rsync-сервер.
max connections = 50
Максимальное количество одновременных подключений.
read only = yes
Установка доступа к ресурсам "только чтение".
list = yes
Установка разрешения клиентам получать список файлов.
Если запретить просмотр списка файлов, то клиенты смогут получить файл только зная его точное имя,
syslog facility = local5
Установка уровня отладочных сообщений для syslog.
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.mp3
Установка шаблонов имён файлов, содержимое которых не нужно сжимать при передаче.
use chroot = yes
Установка изменения корневого каталог rsync-сервера на указанный в path.
Изменение каталога может использоваться для повышения безопасности.
outgoing chmod = Fu=rw,g=rw,o=,Du=rwx,g=rx,o=
Установка права доступа к отдаваемым файлам.
Поскольку протокол rsync позволяет вместе с содержимым файлов передавать права доступа к ним и идентификаторы
владельца и группы, можно задать особые права доступа, которые будут заменять реальные права доступа к данному
файлу или каталогу при его передаче по сети.
[media]
В квадратных скобках задаётся имя секции.
Каждая секция обязана иметь собственный параметр path.
Дополнительно в ней могут быть переопределены и значения глобальных параметров.
path = /media/
comment = media files
Пример файла конфигурации /etc/rsyncd.conf
syslog facility=daemon - стартовать в режиме демона
pid file=/var/run/rsyncd.pid - с сохранением идентификатора процесса в файле /var/run/rsyncd.pid
motd file = /etc/rsync/hello - отвечать клиенту в начале сессии приветствием из файла /etc/rsync/hello.
transfer logging = yes
log file = /var/log/rsyncd.log - вести протокол переданных клиенту файлов в /var/log/rsyncd.log
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes - по заданному формату
[root]
comment = rsync open for root - предоставлен доступ
uid = root - от имени пользователя root
gid = root - и группы root
path = / - с доступом к корневому каталогу в терминах rsync-сервера
list = yes - с возможностью его просмотра списка файлов
read only = yes - но только для чтения
hosts allow = hosts-name - и только с рабочей станции hosts-name (из /etc/hosts)
hosts deny = 0.0.0.0/0.0.0.0
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz - не сжимая при передаче файлы указанных расширений
exclude from = /etc/rsync/rsyncd-exclude - и исключая файлы описанные в файле /etc/rsync/exclude
Ссылки
Использование команды rsync
Синтаксис команды
# rsync [параметры] <откуда> <куда>
где
<откуда> и <куда> - источник и целевой объект
Объектами копирования могут быть как файлы, так и папки, находящиеся как в пределах файловой
системы, так и удалённо, например на SSH или RSYNC-сервере.
[параметры] - необязательные параметры копирования/синхронизации, например
-v, --verbose
повышение детализации при копировании, например показывать название файлов
-a, --archive
режим архивации, объединяет несколько ключей -rlptgoD
-r, --recursive
копирование рекурсивно. просматривая все вложенные файлы и каталоги
-l, --links
сохранять символические ссылки
-p, --perms
сохранять права на файлы
-t, --times
сохранять время изменения файлов
-g, --group
сохранять группу файлов
-o, --owner
сохранять владельца файлов (работает только для суперпользователя)
--devices
сохранять файлы устройств (работает только для суперпользователя)
--specials
сохранять специальные файлы
-D
сохранять файлы устройств и специальны файлы, идентично --devices --specials
-H, --hard-links
сохранять жесткие ссылки
-x, --one-file-system
не выходить за пределы файловой системы
-z, --compress
сжимать файлы данных во время передачи
--compress-level=NUM
явное задание степени сжатия
--skip-compress=LIST
пропуск сжатия файлов с суффиксом LIST
--progress
показывать сколько процентов осталось до завершения и скорость передачи
--numeric-ids
не транслировать имена владельца и группы в цифровые UID и GID, оставить номера как есть
--delete
удалять файлы в приёмнике, которых уже нет в источнике
--delete-before
удалять файлы перед началом копирования
--delete-during
удалять файлы во время копирования
--delete-delay
удалять файлы после окончания копирования, но искать их во время
--delete-after
удалять файлы после окончания копирования
--delete-excluded
удалять файлы включая исключённые
--exclude=PATTERN
исключать копирование файлов соответствующие маске PATTERN
--exclude-from=FILE
получить маски исключаемых при копирование файлов из файла FILE
--include=PATTERN
не исключать копирование файлов соответствующие маске PATTERN
--include-from=FILE
получить маски неисключаемых при копирование файлов из файла FILE
--files-from=FILE
получить список копируемых файлов из файла FILE
-e ssh
использовать при копировании ssh
-n, --dry-run
пробный режим копирования без изменений
--bwlimit=KBPS
установка ограничения скорости передачи файлов
Примеры использования rsync-копирования
Синхронизация данных с RSYNC-сервера в целевую папку
# rsync -rlpgoDvsH --delete root@IP-RSYNC-SERVER::<SOURCE_PATH>/ <DEST_PATH>/
где
-rlpgoDvsH - параметры копирования
rroot@IP-RSYNC-SERVER::<SOURCE_PATH>/ - путь до источника данных в терминах rsync-сервера
<DEST_PATH> - путь до папки назначения в терминах rsync-клиента
--delete - команда "удалять файлы" в резервном архиве, если они удалены на rsync-сервере
Синхронизация двух каталогов файловой системы
# rsync -avsq --delete -b --backup-dir=<LOCAL_PATH>/modify --suffix=.`date +%Y-%m-%d` <SRC_PATH>/ <DEST_PATH>/
где
-avsq - параметры копирования
<SRC_PATH> - путь до каталога, подлежащего резервному копированию
<DEST_PATH> - путь до папки куда копируются данные
-b --backup-dir=<LOCAL_PATH>/modify --suffix=.`date +%Y-%m-%d`
- команда сохранять файлы которые изменялись в каталоге
с присвоением расширения файлам даты резервного копирования
Создание (только) структуры каталогов (без копирования файлов)
# rsync -avH -f"+ */" -f"- *" <SRC_PATH>/ <DEST_PATH>/
# rsync -avH --exclude="*.*" <SRC_PATH>/ <DEST_PATH>/
Копирование больших файлов на медленных и неустойчивых линиях
# prg_rsync -avsH --partial --partial-dir="<PART_PATH/>" <SRC_PATH>/ <DEST_PATH>/
где
-avsH - параметры копирования
<SRC_PATH> - путь до каталога, подлежащего резервному копированию
<DEST_PATH> - путь до папки куда копируются данные
---partial - установка сохранения даже не полностью скопированных файлов
--partial-dir="<PART_PATH/>" - путь до папки куда сохраняются не полностью скопированные файлы
--append-verify - установка проверки существующего файла для синхронизации лишь остатка не скопированного куска