MacOS:rsync

Материал из 8j0rn wiki
Версия от 21:39, 8 февраля 2024; Admin (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Программа для UNIX-подобных систем, которая эффективно выполняет синхронизацию файлов и каталогов в двух местах с минимизированием трафика, используя кодирование данных при необходимости. Важным отличием rsync от многих других программ/протоколов является то, что зеркалирование осуществляется одним потоком в каждом направлении. rsync может копировать или отображать содержимое каталога и копировать файлы, опционально используя сжатие и рекурсию. rsync передаёт только изменения файлов, что отражается на производительности программы.

Установка rsync на macOS

Устанавливается через HomeBrew командой в терминале:

 $> brew install rsync

Если у вас старый iMac (macOS Catalina), то в процессе установки возникнет ошибка с выбором что делать дальше. Выбираем пункт 2. Ignore (просто на клавиатуре нажимаем 2).

После чего нужно будет перезагрузиться в режиме восстановления (cmd+R) и запустить Терминал. И в нем прийдется ручками вбить 4 команды:

$> mv /Volumes/mac/usr/bin/rsync /Volumes/mac/usr/bin/rsync3.1.2
$> ln -s /Volumes/mac/usr/local/Cellar/rsync/3.2.7_1/bin/rsync /Volumes/mac/usr/bin/rsync
$> mv /Volumes/mac/usr/local/bin/rsync /Volumes/mac/usr/local/bin/rsync3.1.2
$> ln -s /Volumes/mac/usr/local/Cellar/rsync/3.2.7_1/bin/rsync /Volumes/mac/usr/local/bin/rsync

(Адрес версии rsync может отличаться ввиду выхода новых версий, нужно проверить перед началом)

Синхронизация

Запускается через терминал или можно установить в cron:

Локально:

 $> rsync -auvq8 --delete --progress «ЧТО» «КУДА»

Между компьютерами и/или серверами

 $> rsync -auvq8 -e='ssh -p 99' --delete --progress «логин»@«адрес»:«ЧТО» «логин»@«адрес»:«КУДА»

Ключи

  • -a => Режим архивирования, когда сохраняются все атрибуты оригинальных файлов;
  • -u => Не перезаписывать более новые файлы;
  • -v => Выводить подробную информацию о процессе копирования;
  • -q => Минимум информации;
  • -8 => Это говорит rsync оставлять все старшие разрядные символы в выводе неэкранированными, вместо того, чтобы пытаться проверить их, допустимы ли они в текущей локали, и экранировать недопустимые. Все управляющие символы (но не символы табуляции) всегда экранируются, независимо от настройки этой опции. Идиома экранирования, появившаяся в версии 2.6.7, заключается в выводе буквальной обратной косой черты (\) и решетки (#), за которыми следуют ровно 3 восьмеричные цифры. . Например, новая строка будет выводиться как «\#012». Буквальная обратная косая черта в имени файла не экранируется, если за ней не следует хеш и 3 цифры (0–9).
  • -e='ssh -p 22' => Использовать другой транспорт, например, ssh;
  • --delete => Удалять файлы которых нет в источнике; (Использовать с осторожностью, могут быть нежелательные последствия)
  • --progress => Выводить прогресс передачи файла;

Есть и другие ключи, «ТЫндекс» вам в помощь.

Файл конфигурации сервера rsync

На удаленных компьютера/серверах нужно обязательно настроить SSH (Как настроить: ssh macOS или ssh на QNAP) А так же следует отредактировать файл конфигурации rsync, который находится:

 $> /etc/rsyncd.conf

Пример содержимого файла:

pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log
[share]
path = /tmp/share/
hosts allow = 192.168.56.1
hosts deny = *
list = true
uid = root
gid = root
read only = false

(После редактирования файла следует перезапустить службу или перезагрузить компьютер)