Архивирование (бэкап) через SSH используя Putty

arthyrgrex

Client
Регистрация
12.05.2013
Сообщения
104
Благодарностей
31
Баллы
28
Запускаю Putty через экшен "Запуск программы"
1.png


Команда:
-ssh serverip -l root -pw password -P 22

Консоль без проблем запускается и логинится под рутом на сервер.

Пытаюсь делать бэкап файлов одной командой:
-ssh serverip -l root -pw password -P 22 zip -r /home/admin/web/site.ru/backup.zip /home/admin/web/site.ru/public_html

Putty отдает ошибку:
2.PNG


хотя, если в консоли просто написать команду:
zip -r /home/admin/web/site.ru/backup.zip /home/admin/web/site.ru/public_html
бэкап без проблем создается (т.е. синтаксис команды правильный)

Подскажите пожалуйста, может нужно аргумент -r как-то в кавычки выделять или по другому команду прописывать, чтобы в одну команду он логинился и запускал архивацию?
Заранее спасибо.

п.с. гуглил, яндексил, серчил на зенофоруме, ничего не нашел, кроме использования сторонних библиотек (чего не особо хотелось бы)
 

Zedx

Client
Регистрация
12.06.2018
Сообщения
1 343
Благодарностей
909
Баллы
113
Putty не нужна, она тут выглядит как костыль. Гораздо проще работать напрямую с сервером через библиотеку Renci.SshNet

C#:
using (var ssh = new SshClient(ip, port, user, password))
{
    try
    {
        ssh.Connect();
        ssh.RunCommand("zip -r /home/admin/web/site.ru/backup.zip /home/admin/web/site.ru/public_html");
        ssh.Disconnect();
    }

    catch (Exception e)
    {
        throw new Exception(e.Message);
    }
}
И добавить
using Renci.SshNet;
 

Вложения

arthyrgrex

Client
Регистрация
12.05.2013
Сообщения
104
Благодарностей
31
Баллы
28
спасибо за совет, буду пробовать
 

arthyrgrex

Client
Регистрация
12.05.2013
Сообщения
104
Благодарностей
31
Баллы
28
немного уточню для тех, кто будет интересоваться этим вопросом:

1) кладем библиотеку "Renci.SshNet.dll" в папку "C:\Program Files\ZennoLab\RU\ZennoPoster Pro V7\7.7.0.0\Progs\ExternalAssemblies"
2) добавляем в проект "Ссылки из GAC" и "Директивы using и общий код"
3) в "Ссылки из GAC" нажимаем "Обзор" и добавляем нашу библиотеку
4) в "Директивы using и общий код" в двух вкладках прописываем "using Renci.SshNet; "

точный код, создание архива директории с рекурсией:
using (var ssh = new SshClient("ip", port, "login", "pass"))
{
    try
    {
        ssh.Connect();
        ssh.RunCommand("zip -r /полный/путь/куда/сохраняем/архив/название-архива.zip /полный/путь/к/директории/которую/архивируем");
        ssh.Disconnect();
    }

    catch (Exception e)
    {
        throw new Exception(e.Message);
    }
}
 
  • Спасибо
Реакции: theinova

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)