QNAP NAS:Entware:rsync: различия между версиями

Материал из 8j0rn wiki
Нет описания правки
Нет описания правки
Строка 7: Строка 7:
==Команда установки==
==Команда установки==


<syntaxhighlight lang="bash">  
<syntaxhighlight lang="bash"> $> /opt/bin/opkg install rsync
$> /opt/bin/opkg install rsync
$> /opt/bin/opkg install rsyncd
</syntaxhighlight>
</syntaxhighlight>



Версия от 21:13, 8 февраля 2024

Установка rsync на QNAP NAS

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

«Из коробки» на моем QNAP NAS TS-412 стоит старая версия rsync 3.0.7, поэтому пришлось устанавливать дополнительно из Entware (opkg).

Команда установки

 $> /opt/bin/opkg install rsync
 $> /opt/bin/opkg install rsyncd
  • rsync => это программа, которая позволяет копировать файлы на удаленные машины и с них почти так же, как rcp. Он имеет гораздо больше возможностей, чем rcp, и использует протокол удаленного обновления rsync для значительного ускорения передачи файлов, когда целевой файл уже существует. Протокол удаленного обновления rsync позволяет rsync передавать по сетевому каналу только различия между двумя наборами файлов.
  • rsyncd => это файл конфигурации и сценарий инициализации для использования rsync в качестве демона. Он использует тот же двоичный файл, что и rsync.

Скрипт для контроля версий

#!/bin/bash
### Rsync 
    if [ -L "/mnt/ext/usr/bin/rsync" ]; then
    echo "Файл уже ссылка!"
    else
        if [ -f "/mnt/ext/usr/bin/rsync3.0.7" ]; then
            rm /mnt/ext/usr/bin/rsync3.0.7
        fi
        mv /mnt/ext/usr/bin/rsync /mnt/ext/usr/bin/rsync3.0.7
        ln -s /opt/bin/rsync /mnt/ext/usr/bin/rsync
    fi

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

Запускается через терминал или можно установить в 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

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