Программа для подключения SFTP как диск, способ бэкапа сайта
Ранее писал заметки о различных способах бэкапа данных с Unix и Linux серверов и вот. Сейчас хочу рассказать о последней версии моего способа, который удалось автоматизировать.
Недавно узнал о новых возможностях в программе NetDrive, которую я использую для подключения к серверу по SFTP.
Я много времени искал полностью бесплатную альтернативу NetDrive, аналог FileZilla, WinSCP, только чтобы сервер монтировался в виде диска, а не просто подключение, но такого похоже нет. Есть какие-то решение, но им далеко до визуального оформления и работоспособности NetDrive.
Самое простое и правильное это купить NetDrive или его платный аналог и жить спокойно. Однако на лицензию программы и поддержку в течении года придется выложить 50$, а на пожизненную лицензию и поддержку 100$. Не каждый сможет взять и потратить такую немалую сумму. Часто бывает, что лицензии по какой либо причине перестают работать или накладываются другие ограничения, да и программа через время может стать не нужна.
В ограниченном режиме NetDrive 2.6 доступно монтирование одновременно одного диска в ручном режиме и ограничена скорость. Если вы никуда не спешите, то используя автоматизацию вполне можно пользоваться этим вариантом.
Сейчас непросто найти последнюю версию ветки 2.6, в которой работает ограниченный режим, поэтому я выкладываю ее, заодно будет реклама отличной программе!
Скачать NetDrive2 2.6.20.985 ссылка (оригинальная версия)
Оказывается в пакете NetDrive есть команда nd2cmd.exe для монтирования диска в консольном режиме — ее можно использовать в скриптах!
Для начала создаем подключение к нашему FTP, SFTP, DAV.. и назначаем букву, например X и проверяем подключение вручную. Если все получается, то отлично.
Пример подключения NetDrive из скрипта для бэкапа:
taskkill /IM netdrive2.exe /f echo "Mount disk - X" "c:\program files\netdrive2\"nd2cmd.exe -c m -n Site robocopy x:\ c:\BackupSite\ %key_robo%:c:\log\sync.log taskkill /IM netdrive2.exe /f |
Ключи для robocopy
set key_robo=/MIR /R:3 /W:3 /MIR /NDL /TEE /NP /X /LOG |
Расскажу по шагам как работает часть скрипта.
taskkill — принудительно убивает процесс, с названием netdrive2.exe — это на случай, если NetDrive уже запущен и что-то подключено, дальше монтируем диск, подключение которого называется Site. Robocopy с ключами синхронизирует нужные каталоги, после завершения синхронизации уничтожаем процесс netdrive. Готово.
Таким образом у меня на копировании 5 серверов, можно больше, можно подключать под одной и той же буквой без создания подключения в интерфейсе NetDrive.
Пример монтирования диска в консоле с помощью nd2cmd (из комплекта NetDrive):
"c:\program files\netdrive2\"nd2cmd.exe -c m -t ftp -u sftp://site.com:22 -a user -p password -d S -n Site |
Так можно отключать диск.
"c:\program files\netdrive2\"nd2cmd.exe -c u -d f |
Отключение работало не всегда или не всегда после этого нормально подключалось, надежнее «убивать» процесс, используя taskkill.
Таким образом можно используя автоматизацию в скрипте использовать NetDrive 2.6 в бесплатном режиме.
Фразы: как подключить FTP как диск, netdrive 2 console mount ssh, ключ для подключения сервера через SSH nd2cmd.exe
Ошибка no matching host key type found. Their offer:
Решение
Добавляем в конфиг SSH
PubkeyAcceptedAlgorithms +ssh-rsa
HostkeyAlgorithms +ssh-rsa