Это старая версия документа.
Содержание
Резервирование файлов ПЛК через rsync
Вариант 1 (рекомендуемый)
- Установить rsync на ПЛК:
sudo apt install rsync
или установить вручную https://packages.ubuntu.com/jammy/rsync:
sudo dpkg -i rsync_3.2.7-0ubuntu0.22.04.2_amd64.deb
- Запустить rsync демона:
sudo systemctl start rsync sudo systemctl enable rsync
- Установить клиента на Windows https://www.itefix.net/cwrsync-client в папку:
c:/cwrsync
- Создать ключи (все по умолчанию):
c:/cwrsync/bin/ssh-keygen.exe
- Скопировать содержимое файла:
c:/users/user/.ssh/id_ed25519.pub
Добавить в файл на ПЛК:
mcedit /home/jrobo/.ssh/authorized_keys
- Проверить работу ssh:
c:/cwrsync/bin/ssh jrobo@192.168.2.210
- Добавить в конец файла
c:\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/c/bckp rsync %params% jrobo@192.168.2.210:/data/jrobo-rcp /cygdrive/c/bckp rsync %params% jrobo@192.168.2.210:/data/projects /cygdrive/c/bckp rem Каталог назначения должен быть создан заранее!
- Создать задачу:
schtasks /create /sc hourly /mo 1 /tn rsync-jrobo /tr c:\cwrsync\cwrsync.cmd
Вариант 2 (устаревший)
Windows-клиент забирает файлы у linux-сервера при помощи rsync по ssh. Все действия выполняются на стороне windows-клиента под пользователем user
.
cygwin
Скачать и распаковать в C:\
- cygwin32, cygwin64.
Или развернуть с нуля 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@<remote_ip> ssh jrobo@<remote_ip> 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 ч
- Параметры, установить
Немедленно запускать задачу…