====== Резервирование файлов rsync ======
man rsync [[https://linux.die.net/man/1/rsync|en]] [[http://www.opennet.ru/man.shtml?category=1&russian=0&topic=rsync|ru]]
===== Вариант 1 (рекомендуемый) =====
* Установить rsync на ПЛК:
sudo apt install rsync
или установить вручную (выбрать нужную версию ubuntu) https://packages.ubuntu.com/jammy/rsync:
sudo dpkg -i rsync_3.2.7-0ubuntu0.22.04.2_amd64.deb
* Запустить сервис:
sudo touch /etc/rsyncd.conf
sudo systemctl start rsync
sudo systemctl enable rsync
* Установить клиента на Windows https://www.itefix.net/cwrsync-client в папку:
d:\asutp\cwrsync
* Создать ключи (все по умолчанию):
d:\asutp\cwrsync\bin\ssh-keygen.exe
* Скопировать содержимое файла:
c:\users\user\.ssh\id_ed25519.pub
Добавить в файл на ПЛК:
mcedit /home/jrobo/.ssh/authorized_keys
* Проверить работу ssh (должно логиниться без пароля):
d:\asutp\cwrsync\bin\ssh jrobo@192.168.2.210
Если будут жалобы типа ''"permissions are too open..."'', через проводник поправить разрешения файлу ''c:/users/user/.ssh/id_ed25519'' ([[https://superuser.com/questions/1296024/windows-ssh-permissions-for-private-key-are-too-open|src]]):
* Свойства / Безопасность / Дополнительно
* Оставить полный доступ только текущему пользователю и удалить разрешения всем остальным
* Отключить наследование
* Добавить в конец файла ''d:\asutp\cwrsync\cwrsync.cmd'':
SET params=-avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --delete --progress
rem Далее прописать, что нужно синхоронизировать, например:
rsync %params% jrobo@192.168.2.210:/data/jrobo-plc /cygdrive/d/asutp/bckp
rsync %params% jrobo@192.168.2.210:/data/jrobo-rcp /cygdrive/d/asutp/bckp
rsync %params% jrobo@192.168.2.210:/data/projects /cygdrive/d/asutp/bckp
rem Каталог назначения должен быть создан заранее!
* Создать задачу ([[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/schtasks|src]]):
schtasks /create /sc hourly /mo 1 /ru "SYSTEM" /tn rsync-jrobo /tr d:\asutp\cwrsync\cwrsync.cmd
* Удалить задачу:
schtasks /delete /tn rsync-jrobo
===== Вариант 2 (устаревший) =====
Windows-клиент забирает файлы у linux-сервера при помощи rsync по ssh. Все действия выполняются на стороне windows-клиента под пользователем ''user''.
==== cygwin ====
Скачать и распаковать в ''C:\'' - [[http://prom-auto.ru/download/dist/cygwin32.rar|cygwin32]], [[http://prom-auto.ru/download/dist/cygwin64.rar|cygwin64]].
Или развернуть с нуля [[https://cygwin.com/install.html|cygwin]]:
* Root Install Directory: ''c:\cygwin''
* Local Package Directory: ''c:\cygwin_dist''
* Select Packages:
* net/rsync
* net/openssh
* utils/mc
* utils/dos2unix
==== ssh ====
C:\cygwin\Cygwin.bat
Далее в терминале:
ssh-keygen -f ~/.ssh/id_rsa -q -P ""
ssh-copy-id -i ~/.ssh/id_rsa jrobo@
ssh jrobo@
exit
exit
==== rsync ====
Создать три файла в ''d:\asutp\utils\jrbackup''.
''backup_jroboplc_start.bat'':
start /min backup_jroboplc.bat
''backup_jroboplc.bat'':
PATH=C:\cygwin\bin;%PATH%
dos2unix backup_jroboplc.sh
bash backup_jroboplc.sh
exit
''backup_jroboplc.sh'':
remote_host=192.168.2.210
remote_user=jrobo
remote_dir=/data/jroboplc/
backup_dir=/cygdrive/d/asutp/jroboplc_backup
mkdir -p ${backup_dir}
rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --delete --progress ${remote_user}@${remote_host}:${remote_dir} ${backup_dir}
==== scheduler ====
- Запустить ''taskschd.msc''
- Выбрать дереве ''Библиотека планировщика заданий''
- В главном меню ''Действие / Создать папку'' - ''promauto''. Выбрать созданную папку.
- Правый клик ''Создать простую задачу''
* Имя ''jroboplc_backup''
* Ежедневно / Повторять каждый 1 день
* Запустить программу ''d:\asutp\utils\jrbackup\jroboplc_backup_start.bat'', Рабочая папка ''d:\asutp\utils\jrbackup''
- Открыть свойства созданной задачи
* Триггеры, двойной клик по триггеру, установить ''Повторять задачу каждые 1 ч''
* Параметры, установить ''Немедленно запускать задачу...''