Апр 272012
 

У меня есть скрипт для резервного копирования сайта, который работает по расписанию и создаёт бэкап в виде нескольких tar-архивов в каталоге, скажем, /home/cube/backups. Задача - так же по расписанию заливать эти файлы на Яндекс.Диск.

Почему именно Яндекс.диск?

  • Он работает шустро (по крайней мере, в пределах России).
  • Может работать по WebDAV.
  • Сразу дают 10 бесплатных гигабайт.
  • Он мне нравится.
Почему именно cURL?
  • Я, конечно, знаю про davfs2 и пользуюсь им, но на виртуальном хостинге сие затруднительно.
  • cURL удобен для использования в скриптах.

Несмотря на то, что cURL не поддерживает протокол WebDAV, его использовать для этих целей можно, ибо WebDAV есть, по сути, расширение протокола HTTP(S) несколькими дополнительными методами. А уж с HTTP PUT у cURL никаких проблем нет.

Вот небольшой скриптик, который тоже должен запускаться по расписанию через некоторое время после основного скрипта бэкапа. Всё, что он делает, это находит все файлы с расширением tar в каталоге /home/cube/backups, заливает каждый файл на Яндекс.Диск и удаляет его.

#!/bin/bash
#Created: Cube, 25.04.2012
#Version 1.0
 
cd /home/cube/backups
 
for i in *.tar;
do
	# username:password - имя пользователя и 
	# пароль к аккаунту Яндекса
	curl -T ${i} --user username:password https://webdav.yandex.ru
	rm ${i}
done

Можно приделать красивый вывод, обработку ошибок, etc., но мне хватает и такого скрипта.

  2 комментария to “Простой бэкап на Яндекс.Диск с помощью cURL”

  1. Поделитесь пожалуйста если вы знаете как отлавливать ошибки curl'а?
    Например такие:

    curl: (56) Recv failure: Соединение разорвано другой стороной
    curl: (55) Send failure: Обрыв канала

    • Здравствуйте!
      Думаю, можно попробовать проверять код возврата (в man'е cURL есть длиннейший раздел EXIT CODES).
      Если не знаете, как, пишите сюда, попробуем разобраться - самому интересно :-)

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">

(обязательно)

(обязательно)