We are happy to announce that Vesta is back under active development as of 25 February 2024. We are working on v1 candidate and expect to engage more with the community over the coming months. We are committed to open source, and we encourage contributors to help us build the future of Vesta.
Помогите переделать скрипт под VestaCP [Backup в облако ЯД]
Помогите переделать скрипт под VestaCP [Backup в облако ЯД]
Имеется скрипт, который заливает бэкап на яндекс диск. Как его переделать так, чтобы он заливал в облако бэкапы из папки "/home/backup" и поставить его на CRON ?
Скрипт:
Источник: https://blog.amartynov.ru/archives/linu ... to-webdav/
Скрипт:
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
Re: Помогите переделать скрипт под VestaCP [Backup в облако
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 в облако
Так он будет загружать сразу все архивы в папке бэкап ? А нельзя сделать, чтобы загружал только новые архивы ?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 в облако
На самом деле решение на полрубля, лабается за недолго.
...скучную часть пропустим, про душевные муки, про выбора тоску.
Нам нужен скрипт, который будет в яндекс лить. Собственно есть человек на гитхабе, который скрипт уже написал - 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/, например вот так:
PS: Не стоит копировать с помощь davfs2 - достаточно медленно, но противнее всего, что периодически подвисает при копировании. Даже не думайте монтировать для /home/backup яндекс.диск - это чревато потерей нервных клеток, тормозами и прочими радостями.
...скучную часть пропустим, про душевные муки, про выбора тоску.
Нам нужен скрипт, который будет в яндекс лить. Собственно есть человек на гитхабе, который скрипт уже написал - 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 {} \;
Re: Помогите переделать скрипт под VestaCP [Backup в облако
скриптом :)q1LLa wrote:Так он будет загружать сразу все архивы в папке бэкап ? А нельзя сделать, чтобы загружал только новые архивы ?
Нам нужно получить файлы с текущей датой, мы же знаем, что стандартно архивы называются user.текущая-дата.tar
...sh-скрипт:
timestamp=`date “+%Y-%m-%d”`
cp /home/backup/*.`date “+%Y-%m-%d”`.tar /whereweneed
PS: не проверял, но направление рассуждений прослеживается? :)
Re: Помогите переделать скрипт под VestaCP [Backup в облако ЯД]
cp /backup/*.$(date +%Y-%m-%d).tar /root/Yandex.Disk
Re: Помогите переделать скрипт под VestaCP [Backup в облако ЯД]
Ну да, как одна из реализаций.webnarmin wrote:cp /backup/*.$(date +%Y-%m-%d).tar /root/Yandex.Disk
Но не стоит забывать, что еще и смонтировать это дело нужно сначала.
Я все же склонен к использованию API Яндекса при загрузке файлов более гигабайта.
Как-то оно по опыту надежнее получалось.
Re: Помогите переделать скрипт под VestaCP [Backup в облако ЯД]
Для решения этой задачи
1. установил https://yandex.ru/support/disk/cli-clients.xml
2. поставил в крон на каждые 7 утра синхронизацию /root/sync-yandex-disk
Содержание /root/sync-yandex-disk
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