Резервное копирование данных на Яндекс Диск. Часть 2
Вот и дошло дело до резервного копирования данных на Яндекс Диск.
Для этого нихитрого дела, нужно просто написать скрипт, который будет тарить и гзипить нужные данные, затем монтировать Яндекс Диск и копировать данные на него.
Так как монтировать Яндекс Диск мы уже умеем, осталось дело за скриптом, который я предоставлю ниже.
Вкратце алгоритм скрипта таков:
Бекапим нужные данные на локальном сервере, ищем в директории с бекапами директории старше 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 в начале которого прописать путь к интерпритатору, после которого вставить сам скрипт
sh script.sh
Огромное человеческое вам спасибо за быстрый ответ, хотелось бы от вас статью пошагово для debian7, а то по ссылке которую вы указали, яндекс сплёл всё в кучу.
Вам траф дополнительный, а таким нубам как я радость :)
Был бы это форум поставил бы лайк, а так спасибо за оперативность. Обязательно сошлюсь на вас в своём блоге и форуме!
Таких как Вы мало!
Спасибо, на самом деле рад помочь. Все мы когда то начинали...
Добрый день.
Все сделал, как описано выше. Yandex Disk установился, появился репозиторий. Но не могу понять, как запустить создание резервных копий?
Добавить комментарий