вторник, 23 января 2018 г.

Rsync



Статья о программе для синхронизации файлов и каталогов Rsync
Rsync это программа для синхронизации файлов и каталогов с минимизацией трафика.
Rsync может быть запущен в режиме сервера для организации передачи файлов клиентам через порт и в режиме консольной файловой команды.
Порт используемый RSYNC-сервером по умолчанию TCP/873.
Сайт проекта rsync.samba.org

Установка

Пакет присутствует в хранилище пакетов debian.
Для установки пакета
После установки пакет готов к использованию.
Некоторые часто используемые команды
  # 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              - установка проверки существующего файла для синхронизации лишь остатка не скопированного куска

Комментариев нет:

Отправить комментарий