Резервное копирование файлов сайта по ssh

18 декабря, 2014 Рубрики: Linux, Web, основы Linux

как делать резервную копию сайта plinkВсем добра, уважаемые читатели и гости. Сегодня публикую маленькую заметку о том, как сделать резервную копию файлов сайта по SSH. В интернете куча статей на данную тему, но чем я хочу выделить данную заметку? Тем, что при создании резервной копии на Windows машине с Linux\UNIX хостинга я столкнулся с множеством неудобств и проблем, которые я избежал, используя plink и putty.

Исходные данные для backup

Итак, имеем:

  1. Linux\UNIX хостинг с доступом по SSH, адрес хоста: ssh.host.example
  2. Компьютер с Windows, с помощью которого производим администрирование сайта.
  3. командный интерфейс plink, который поставляется с ssh клиентом PuTTY
  4. доступ в интернет для связи 1го и 2го.
  5. имя пользователя на хостинге: user
  6. пароль: P@sswOrd
  7. каталог, где размещены файлы сайта: /var/www/host.example

Проблема backup

  1. Очень часто, размещая сайт на хостинге, хостер предъявляет высокие требования и лимиты к операциям ввода-вывода на диск. В результате, при создании резервной копии в ssh консоли хостинга, процесс зашкаливающий по лимитам хостинга может быть убит и архив получится битый.
  2. Так же, типичная ситуация, когда у тебя файлы сайта занимают 70-80% дискового пространства, предоставленного хостингом, и при создании архива из ssh консоли хостинга – для полного архива не хватает места.
  3. Дополнительно, хостер может убивать процессы, которые создают большую нагрузку на CPU. Это тоже приведет к некорректно созданному архиву.
  4. Для создания архива с Windows машины необходимо проделать кучу действий: 1. подключиться к консоли по ssh, 2. создать архив, 3. подключиться SCP/SFTP клиентом, 4. скопировать файл архива, 5. удалить архив. Тут же мы выполняем все это одной командой.

Решение проблемы backup через plink

В общем, ранее меня эти проблемы не напрягали, т.к. бэкап нужно было делать не часто, а когда я стал дорабатывать блог, то оперативные архивы стали очень необходимы и я стал искать решения. Я знал, что подключаясь из Linux – это делается элементарно, через pipe. Поэтому я стал искать аналогию на Windows. В конечном счете, необходимо было выполнить команду на удаленном сервере, которая создаст архив и сложит его в локальную папку на клиенте. Долго искать не пришлось – мне помог plink. Как говориться, все гениальное – просто: качаем putty и plink. Выполняем следующие действия, открыв cmd в каталоге с plink.exe:

 c:\PuTTY_folder>plink -pw P@sswOrd [email protected] tar czf - /var/www/host.example > c:\backup_by_plink\backup_of_my_site.tar.gz

Здесь:

  • plink – собственно, сам exe’шник
  • -pw P@sswOrd – пароль к учетной записи user
  • [email protected] – имя пользователи и хост, на котором буде выполнены программа
  • tar czf – /var/www/host.example – собственно, исполняемая программа (читаем основные команды linux). Указывая “-” мы говорим tar’y выводить архив на консоль (вернее stdout).
  • > – символ командной строки Windows, осуществляющий перенаправление вывода команды в файл (аналог pipe в Linux)
  • c:\backup_by_plink\backup_of_my_site.tar.gz – место сохранения архива.

Т.о. мы решаем все 4 проблемы. При этом, если отключим компрессию (ключ z), то практически снизим нагрузку на CPU на хостинге.

Ссылки

Plink и Putty – http://www.chiark.greenend.org.uk/~sgtatham/putty/
документация – http://www.chiark.greenend.org.uk/~sgtatham/putty/docs.html
документация на русском – http://putty.org.ru/docs.html

P.S. 

Надеюсь, что кроме меня данная заметка будет кому-то полезна. Так же, хочу отметить, что кроме tar, тут никто не мешает использовать mysqldump, например. ;-)  До новых встреч!

С Уважением, Mc.Sim!




Теги:

13 комментариев к “Резервное копирование файлов сайта по ssh”

  1. 18 декабря, 2014 at 22:34
    1

    Спасибо очень интересное решение

  2. Игорь
    18 декабря, 2014 at 22:49
    2

    Здравствуйте, я бы посоветовал использовать не putty а kutty тоже самое только конфиг и папку сессий она хранит не в реестре как putty а рядышком с собой.

    • 18 декабря, 2014 at 23:05
      3

      Да, я знаком с kitty. Спасибо.

  3. Александр
    19 декабря, 2014 at 10:50
    4

    Какого рода проблемы и неудобства? Чем данное решение лучше других решений, которые породили определенные неудобства?

    Тема не раскрыта.

    • 19 декабря, 2014 at 11:46
      5

      Добрый день, Александр.
      Я совсем не претендовал на лучшее решение.
      Это просто один из способов сделать бэкап, который я решил зафиксировать в истории.
      Проблемы, перечисленные в статье, я могу считать решенными для себя. Но я готов подискутировать на данную тему, если у Вас есть аргументы )

  4. Stoner
    19 декабря, 2014 at 23:26
    6

    Рад, что вы вернулись. Замечательный блог)

  5. MiF
    25 декабря, 2014 at 10:48
    7

    Благодарю за заметку, всегда с инетерсом читаю ваш блог. Нашел в нем для себя много интресного и познавательного.

    • 8 апреля, 2015 at 20:31
      8

      Пожалуйста.
      Приходите еще.

  6. Ольга
    31 мая, 2017 at 13:32
    9

    Спасибо, хорошее решение, попробую применить на практике.
    Давно читаю ваш блог, всегда нахожу что-то полезное для себя

  7. Кирилл
    12 февраля, 2018 at 23:55
    10

    Благодарствую за гайд по копированию, весьма пригодился =)

  8. Илья
    7 декабря, 2020 at 16:51
    11

    Странно, но архив получается битый…

    • 15 декабря, 2020 at 23:42
      12

      Да, у меня такое тоже было.
      Я могу предположить, что это может быть связано с неверной кодировкой, которая установлена в putty.

  9. Frz
    5 сентября, 2022 at 12:17
    13

    Сейчас нужно еще добавить -no-antispoof иначе не заработает

Написать комментарий