====== Резервирование файлов 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 ч'' * Параметры, установить ''Немедленно запускать задачу...''