MacOS:rsync: различия между версиями
Admin (обсуждение | вклад) (Новая страница: «Программа для UNIX-подобных систем, которая эффективно выполняет синхронизацию файлов и каталогов в двух местах с минимизированием трафика, используя кодирование данных при необходимости. Важным отличием rsync от многих других программ/протоколов являе...») |
Admin (обсуждение | вклад) Нет описания правки |
||
| (не показаны 2 промежуточные версии этого же участника) | |||
| Строка 3: | Строка 3: | ||
==Установка rsync на macOS== | ==Установка rsync на macOS== | ||
Устанавливается через [[macOS:homebrew|HomeBrew]] командой в [[macOS:terminal-mac-os|терминале]]: | Устанавливается через [[macOS:homebrew|HomeBrew]] командой в [[macOS:terminal-mac-os|терминале]]: | ||
< | <syntaxhighlight lang="bash"> $> brew install rsync</syntaxhighlight> | ||
Если у вас старый iMac (macOS Catalina), то в процессе установки возникнет ошибка с выбором что делать дальше. Выбираем пункт 2. Ignore (просто на клавиатуре нажимаем 2). | |||
После чего нужно будет перезагрузиться в режиме восстановления (cmd+R) и запустить Терминал. | |||
И в нем прийдется ручками вбить 4 команды: | |||
<syntaxhighlight lang="bash"> | |||
$> 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 | |||
</syntaxhighlight> | |||
<code style="color: red">(Адрес версии rsync может отличаться ввиду выхода новых версий, нужно проверить перед началом)</code> | |||
==Синхронизация== | ==Синхронизация== | ||
| Строка 9: | Строка 22: | ||
===Локально:=== | ===Локально:=== | ||
< | <syntaxhighlight lang="bash"> $> rsync -auvq8 --delete --progress «ЧТО» «КУДА»</syntaxhighlight> | ||
===Между компьютерами и/или серверами=== | ===Между компьютерами и/или серверами=== | ||
< | <syntaxhighlight lang="bash"> $> rsync -auvq8 -e='ssh -p 99' --delete --progress «логин»@«адрес»:«ЧТО» «логин»@«адрес»:«КУДА»</syntaxhighlight> | ||
===Ключи=== | ===Ключи=== | ||
| Строка 21: | Строка 34: | ||
* -8 => Это говорит rsync оставлять все старшие разрядные символы в выводе неэкранированными, вместо того, чтобы пытаться проверить их, допустимы ли они в текущей локали, и экранировать недопустимые. Все управляющие символы (но не символы табуляции) всегда экранируются, независимо от настройки этой опции. Идиома экранирования, появившаяся в версии 2.6.7, заключается в выводе буквальной обратной косой черты (\) и решетки (#), за которыми следуют ровно 3 восьмеричные цифры. . Например, новая строка будет выводиться как «\#012». Буквальная обратная косая черта в имени файла не экранируется, если за ней не следует хеш и 3 цифры (0–9). | * -8 => Это говорит rsync оставлять все старшие разрядные символы в выводе неэкранированными, вместо того, чтобы пытаться проверить их, допустимы ли они в текущей локали, и экранировать недопустимые. Все управляющие символы (но не символы табуляции) всегда экранируются, независимо от настройки этой опции. Идиома экранирования, появившаяся в версии 2.6.7, заключается в выводе буквальной обратной косой черты (\) и решетки (#), за которыми следуют ровно 3 восьмеричные цифры. . Например, новая строка будет выводиться как «\#012». Буквальная обратная косая черта в имени файла не экранируется, если за ней не следует хеш и 3 цифры (0–9). | ||
* -e='ssh -p 22' => Использовать другой транспорт, например, ssh; | * -e='ssh -p 22' => Использовать другой транспорт, например, ssh; | ||
* --delete => Удалять файлы которых нет в источнике; < | * --delete => Удалять файлы которых нет в источнике; <code style="color: red">(Использовать с осторожностью, могут быть нежелательные последствия)</code> | ||
* --progress => Выводить прогресс передачи файла; | * --progress => Выводить прогресс передачи файла; | ||
Есть и другие ключи, «ТЫндекс» вам в помощь. | Есть и другие ключи, «ТЫндекс» вам в помощь. | ||
==Файл конфигурации сервера rsync== | |||
На удаленных компьютера/серверах нужно обязательно настроить SSH (Как настроить: [[macOS:SSH|ssh macOS]] или [[QNAP_NAS:Entware:SSH|ssh на QNAP]]) | |||
А так же следует отредактировать файл конфигурации rsync, который находится: | |||
<syntaxhighlight lang="bash"> $> /etc/rsyncd.conf</syntaxhighlight> | |||
Пример содержимого файла: | |||
<syntaxhighlight lang="bash"> | |||
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 | |||
</syntaxhighlight> | |||
<code style="color: red">(После редактирования файла следует перезапустить службу или перезагрузить компьютер)</code> | |||
Текущая версия от 21:39, 8 февраля 2024
Программа для 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
(После редактирования файла следует перезапустить службу или перезагрузить компьютер)