Резервная копия файлов сайта на Яндекс.Диск

Admin Bash

Bash скрипт архивирования и копирование резервных файлов сайта на Яндекс.Диск.

Продолжение цикла статей по резервному копированию на Яндекс диск по протоколу WebDAV. Там же статья как установить вебдав к себе на сервер.

Примеры скриптов резервного копирования. Там все актуальное и вполне рабочее.

В тех скриптах принцип был следующий: монтировался Яндекс.Диск по WebDAV и туда сразу создавалась копия.

В принципе всё должно работать. Однако на новом хостинге я столкнулся с тем, что при большом архиве где-то файл теряется по дороге.

С недавних пор у Яндекса поменялась политика в компании по отношению к использования Яндекс Диска. Они теперь ограничивают подобные вещи. Якобы Яндекс диск создан для домашнего использования, а резервные копии — это инфраструктурные задачи. Поэтому большие бэкапы могут обрываться, но бэкапы до полтора гигабайта пока всё ещё копируются.

В этой статье принцип немного другой: мы создаем копию у себя на сервере. Затем монтируем диск и после этого отправляем эту копию на Яндекс.Диск.

Но это тоже ещё не всё. Мы оставляем последний файл у себя на сервере. А предыдущий удаляем. По этой причине создайте у себя какой-нибудь пустой файл, который будет отправной точкой удаления.

Ниже весь скрипт bash с подробным описаниям и пояснениям:

#!/bin/sh
#
# Backup sites and copy to Yandex.Disk

##################
# Create archive
##################

date=`date +"%Y_%m_%d_%H:%M"`
filename='backup-sites_'$date'.tar.gz'

server_path='/home/admin/'

backups_dir=$server_path'backups/'

dir_for_backup='web'

# Create archive gzip
# c - создает новый файл
# z - создать gzip из архива .tar
# v — показать прогресс создания файла .tar.
# f — сообщает команде, что следующим аргументом является имя файла архива
# C - перейти в директорию
/usr/bin/tar -czvf $backups_dir$filename -C $server_path $dir_for_backup

##################
# Copy to Yandex
##################

# Mount Yandex.Disk
mount -t davfs https://webdav.yandex.ru /mnt/yandex/

# Path on Yandex.Disk
yandex_disk='/mnt/yandex/backups/sites'

# Copy to yandex server
# t - сортировка по дате изменения, первые в начале
# r - обратный порядок при сортировке
# 1 - отображать по одному файлу на строку
cp `ls -tr1 $backups_dir* | tail -1` $yandex_disk

##################
# Clean
##################

# Удаляет самый старый файл в директории
# ls: t - сортировка по дате изменения, первые в начале
rm -f `ls -t $backups_dir* | tail -1`

# Удаляет резервную копию старше 10 дней на сервере яндекса
/usr/bin/find $yandex_disk -type f -mtime +10 -exec rm {} \;

# UnMount Yandex.Disk
umount /mnt/yandex

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

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

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Резервная копия файлов сайта на Яндекс.Диск"