Резервное копирование данных на Яндекс Диск. Часть 2

Дата публикации: 14 08 2012 Автор: PazitiFF

Вот и дошло дело до резервного копирования данных на Яндекс Диск.

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

Так как монтировать Яндекс Диск мы уже умеем, осталось дело за скриптом, который я предоставлю ниже. 

 

Вкратце алгоритм скрипта таков:

Бекапим нужные данные на локальном сервере, ищем в директории с бекапами директории старше 14 дней и удаляем их. Монтируем Яндекс Диск, копируем на него только сделанный бекап и отключаем монтирование.

А вот и сам скрипт:

#####################################################################

#!/bin/sh
 
TIME=`date +%Y%m%d`;          # Текущие дата и время в формате для удобного создания директории, нпримпер 20100708
DIR='/var/backups/vhosts/';        # Директория где хранятся бекапы
VH=`ls /var/www/`;                      # Список файлов, в моём случае это виртуалхосты
WWW='/var/www/';                    # Путь к файлам для бекапа
DT=$DIR$TIME;                        # переменная которая совмещает в себе дату и путь к директории с бекапами
YDIR='/mnt/yandex_disk/BACKUP/sites/vhosts/'        # Директория в которую монтируется Яндекс Диск
 
# Фукция подключения диска
mountDisk() {  
  mount -t davfs https://webdav.yandex.ru /mnt/yandex_disk/
}
 
# Функция создания бекапа файлов и отсылка сообщения об этом на электронную почту
backupVhosts() {
  mkdir -p $DT
  for n in $VH; do
    tar -zcvf $DT/$n-$TIME.tar.gz $WWW$n > /dev/null 2>&1 && echo "backup $n $TIME `/usr/bin/du -sh $DT/$n-$TIME.tar.gz | /usr/bin/awk '{print $1}'` complete!" 
  done | mail -s 'backup_vhosts complete!' user@xxx.ru
}
 
# Функция копирования файлов в облако
copyOnDisk() {
  if [ -d $YDIR ]; then   
    cp -R $DT $YDIR && echo "Copy vhosts on yandex.disk complete!" | mail -s "Copy vhost on yandex.disk complete!" user@xxx.ru
  else
    mkdir -p $YDIR
    cp -R $DT $YDIR && echo "Create $YDIR and copy on yandex.disk complete!" | mail -s "Create $YDIR and copy on yandex.disk complete!" user@xxx.ru
  fi
}
 
#Функция отключения диска
umountDisk() {
  umount /mnt/yandex_disk
}
 
# Функция создания директории для бекапов на локальном сервере, если её не существует
createDir() {
  if [ ! -d $DIR ]; then 
    echo "create directory $DIR"          
    mkdir -p $DIR
  fi
 } 
 
# Функция поиска устаревших бекапов
findBackups() {
  find $DIR -ctime +14 -delete
}
 
 
# Запускаем функции в нужном нам порядке.
 
if [ -d $DIR ]; then    # Если директория для бекапов существует, начинаем резервное копирование с последующим копированием в облако
        backupVhosts
        findBackups
        mountDisk
        copyOnDisk
        umountDisk
else      # Иначе создать директорию и проделать теже действия
        createDir
        backupVhosts
        findBackups
        mountDisk
        copyOnDisk
        umountDisk
fi
########################################################
Впринцыпе скрипт можно дорабатывать под конкретные нужды, и я надеюсь он комунибудь пригодится!

Комментарии

Спасибо! Мне очень пригодилось.

Всё хорошо по первой части статьи, а вот тут скрипт нарисован - спасибо, а как его прописать и запустить?

Если честно, то статейка уже устарела. Это был своего рода костыль, для того чтобы делать резервные копии на яндекс диск. Сейчас у яндекса имеется полноценный консольный клиент, который можно скачать установить на linux сервер в качестве демона. Очень рекомендую воспользоваться этим решением. Далее немного сократив и усовершеннствовав данный скрипт, можно бекапить и копировать файлы в директорию с диском. 
Шелл скрипты в unix'like системах запускаются следующщим образом:
Создать файл, например script.sh в начале которого прописать путь к интерпритатору, после которого вставить сам скрипт

#!/bin/sh
 
#Здесь вставить скрипт
Далее сделать файл исполняемым и запустить.
sudo chmod +x script.sh
./script.sh
Так же можно запустить скрипт вот так:
sh script.sh 

Огромное человеческое вам спасибо за быстрый ответ, хотелось бы от вас статью пошагово для debian7, а то по ссылке которую вы указали, яндекс сплёл всё в кучу.

Вам траф дополнительный, а таким нубам как я радость :)

Статейку напишу чуть позже, как время будет (к сожалению его у меня сейчас мало). Но могу помочь в установке для Debian (Ubuntu): Впринцыпе там всё просто написано, но новичёк может запутаться. Для начала надо добавить репозиторий с яндекс диском в список репозиториев на своём сервере
echo "deb http://repo.yandex.ru/yandex-disk/deb/ stable main" | sudo tee -a /etc/apt/sources.list.d/yandex.list > /dev/null
Далее устанавливаем ключ репозитория
 wget http://repo.yandex.ru/yandex-disk/YANDEX-DISK-KEY.GPG -O- | sudo apt-key add -
После обновляем дерево пакетов
sudo apt-get update
И далее устанавливаем Яндекс диск
sudo apt-get install -y yandex-disk
Когда установка завершена, надо запустить настройку программы, ввести логин пароль и нужную директорию.
yandex-disk setup
После настройки, запускаем
yandex-disk start
Проверяем
yandex-disk status
Остальные команды описаны в документации по ссылке, которую я давал выше.

Был бы это форум поставил бы лайк, а так спасибо за оперативность. Обязательно сошлюсь на вас в своём блоге и форуме!

Таких как Вы мало!

Спасибо, на самом деле рад помочь. Все мы когда то начинали...

Добрый день.

Все сделал, как описано выше. Yandex Disk установился, появился репозиторий. Но не могу понять, как запустить создание резервных копий?

вверху статьи представлен простой скрипт копирования. Вам надо подстроить его под свои нужды.

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Вы можете использовать подсветку исходного кода следующими тегами: <code>, <blockcode>, <apache>, <bash>, <css>, <drupal6>, <html5>, <javascript>, <mysql>, <php>.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.