Page 1 of 1
Помогите переделать скрипт под VestaCP [Backup в облако ЯД]
Posted: Sun Feb 08, 2015 8:23 pm
by q1LLa
Имеется скрипт, который заливает бэкап на яндекс диск. Как его переделать так, чтобы он заливал в облако бэкапы из папки "/home/backup" и поставить его на CRON ?
Скрипт:
Code: Select all
#!/bin/bash
SERVER_NAME="server1"
TIME=`date +%Y-%b`
FS_FILE=/tmp/$SERVER_NAME-fs.$TIME.tar.gz
MYSQL_FILE=/tmp/$SERVER_NAME-mysql.$TIME.sql.gz
# Archiving filesystem
tar -czf $FS_FILE /etc /root /home
# Archiving databases
mysqldump -u root --password=qwerty --all-databases | gzip > $MYSQL_FILE
# Uploading to the cloud
curl --user USER:PASSWORD -T "{$FS_FILE,$MYSQL_FILE}" https://webdav.yandex.ru/
# Cleanup
unlink $FS_FILE
unlink $MYSQL_FILE
Источник:
https://blog.amartynov.ru/archives/linu ... to-webdav/
Re: Помогите переделать скрипт под VestaCP [Backup в облако
Posted: Mon Feb 09, 2015 2:21 pm
by sol
Code: Select all
#!/bin/bash
FS_FILE=/home/backup/*.tar.gz
# Uploading to the cloud
curl --user USER:PASSWORD -T "{$FS_FILE}" https://webdav.yandex.ru/
Re: Помогите переделать скрипт под VestaCP [Backup в облако
Posted: Mon Feb 09, 2015 4:37 pm
by q1LLa
sol wrote:Code: Select all
#!/bin/bash
FS_FILE=/home/backup/*.tar.gz
# Uploading to the cloud
curl --user USER:PASSWORD -T "{$FS_FILE}" https://webdav.yandex.ru/
Так он будет загружать сразу все архивы в папке бэкап ? А нельзя сделать, чтобы загружал только новые архивы ?
Re: Помогите переделать скрипт под VestaCP [Backup в облако
Posted: Mon Feb 09, 2015 8:21 pm
by skurudo
На самом деле решение на полрубля, лабается за недолго.
...скучную часть пропустим, про душевные муки, про выбора тоску.
Нам нужен скрипт, который будет в яндекс лить. Собственно есть человек на гитхабе, который скрипт уже написал -
https://github.com/abbat/ydcmd - там же и установка и все пирожки. Работает это через Rest API. Работает достаточно стабильно, достаточно предсказуемо. А потом сделаем sh-скрипт и в крон засунем:
/usr/local/bin/ydcmd put /home/backup/ disk:/Backup --timeout=300 --retries=60
Если усложнить задачу, то можно смонтировать еще и в davfs2 диск (статья в помощь -
http://habrahabr.ru/post/142067/). Но это скорее чисто для просмотра и можно также использовать для удаления старых архивов - к примеру мы смонтировали в /mnt/yandex/, например вот так:
Code: Select all
i=10
find /mnt/yandex/Backup -type f -mtime +$i -exec rm -f {} \;
PS: Не стоит копировать с помощь davfs2 - достаточно медленно, но противнее всего, что периодически подвисает при копировании. Даже не думайте монтировать для /home/backup яндекс.диск - это чревато потерей нервных клеток, тормозами и прочими радостями.
Re: Помогите переделать скрипт под VestaCP [Backup в облако
Posted: Mon Feb 09, 2015 8:29 pm
by skurudo
q1LLa wrote:Так он будет загружать сразу все архивы в папке бэкап ? А нельзя сделать, чтобы загружал только новые архивы ?
скриптом :)
Нам нужно получить файлы с текущей датой, мы же знаем, что стандартно архивы называются user.текущая-дата.tar
...sh-скрипт:
timestamp=`date “+%Y-%m-%d”`
cp /home/backup/*.`date “+%Y-%m-%d”`.tar /whereweneed
PS: не проверял, но направление рассуждений прослеживается? :)
Re: Помогите переделать скрипт под VestaCP [Backup в облако ЯД]
Posted: Tue May 24, 2016 9:45 pm
by webnarmin
cp /backup/*.$(date +%Y-%m-%d).tar /root/Yandex.Disk
Re: Помогите переделать скрипт под VestaCP [Backup в облако ЯД]
Posted: Tue May 24, 2016 9:52 pm
by skurudo
webnarmin wrote:cp /backup/*.$(date +%Y-%m-%d).tar /root/Yandex.Disk
Ну да, как одна из реализаций.
Но не стоит забывать, что еще и смонтировать это дело нужно сначала.
Я все же склонен к использованию API Яндекса при загрузке файлов более гигабайта.
Как-то оно по опыту надежнее получалось.
Re: Помогите переделать скрипт под VestaCP [Backup в облако ЯД]
Posted: Wed May 25, 2016 7:35 am
by webnarmin
Для решения этой задачи
1. установил
https://yandex.ru/support/disk/cli-clients.xml
2. поставил в крон на каждые 7 утра синхронизацию /root/sync-yandex-disk
Содержание /root/sync-yandex-disk
Code: Select all
#!/bin/bash
#папка Яндекс Диска на сервере
YA_FOLDER=/root/Yandex.Disk
#количество дней для хранения бэкапа
BACKUP_DAYS=14
CUR_DATE=$(date +%Y-%m-%d)
FOLDER_GREP_PATT='\d{4}-\d{2}-\d{2}'
#запускаем демон в режиме односторонней синхронизации Сервер -> Яндекс Диск
yandex-disk start
#создаем папку на Яндекс Диске
mkdir $YA_FOLDER/$CUR_DATE
# и копируем в нее файлы из /backup
cp /backup/*.$CUR_DATE.tar $YA_FOLDER/$CUR_DATE
#удаляем бэкапы с Яндекс Диска сроком давности больше BACKUP_DAYS дней
diff <(ls $YA_FOLDER | grep -P $FOLDER_GREP_PATT | sort | tail -n$BACKUP_DAYS) <(ls $YA_FOLDER | grep -P $FOLDER_GREP_PATT) | grep '>' | cut -c3- | xargs -i rm -rf $YA_FOLDER/{}
exit