Backup сервера на Яндекс.Диск

2 февраля 2015

Как известно, админы делятся на тех кто не делает бэкапы, и тех кто уже делает.

Кнопка backup

Так то у меня есть бекапы средствами хостинга, но для собственного спокойствия решил таки сделать небольшой скриптик для бекапа всего важного на яндекс.диск, благо появился консольный клиент яндекс.диска под linux.

Особенности:
1. каждая БД сохраняется отдельным файлом, потом все вместе архивируются
2. архивируется каталог /etc
3. архивируется каталог /root
4. архивируется каталог /home
5. итоговый архив шифруется с помощью gpg
6. если архивов в папке больше 7шт (настраивается переменной MAX_FILES), то старые удаляются.

Вся установка/настройка скрипта сводится к:
1. установка и настройка клиента яндекс.диска по ссылке выше
2. копирование скрипта куда-нибудь на сервер
3. настроить логин/пароль к mysql базе

MYSQL_USER="user"
MYSQL_PASSWORD="password"

4. ввести пароль для шифрования файле бекапа (через gpg)

GPG_PASSOWRD="gpg_password"

5. прописать скрипт в cron на запуск например в 4 утра.

0       4       *       *       *       /home/cron/backup.sh  >/dev/null 2>&1

сам скрипт:

#!/bin/bash
MYSQL_USER="user"
MYSQL_PASSWORD="password"
GPG_PASSOWRD="gpg_password"
BACKUP_DIRECTORY="/home/backups"
MAX_FILES=7

databases=`mysql --user=$MYSQL_USER --password=$MYSQL_PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`

curr_date=`date +%Y\.%m\.%d`

for db in $databases; do
    echo `date +%H:%M:%S` ": Dumping database: $db"
    OPT=""
    if [[ "$db" == "mysql" ]] ; then
        OPT=" --events"
    fi
    mysqldump --user=$MYSQL_USER --password=$MYSQL_PASSWORD --databases $db --add-drop-table --add-locks --create-options --single-transaction -Q -c -e $OPT > /tmp/$curr_date.$db.sql
done

echo `date +%H:%M:%S` ": Create DB archive"
cd /tmp
tar czf /home/db_$curr_date.tgz *.sql

echo `date +%H:%M:%S` ": Remove tmp sql files" 
rm /tmp/*.sql 

echo `date +%H:%M:%S` ": Backup etc files"
cd /etc/
tar czf /home/etc_$curr_date.tgz *

echo `date +%H:%M:%S` ": Backup root files"
cd /root/
tar czf /home/root_$curr_date.tgz *

echo `date +%H:%M:%S` ": Backup all files"
cd /home/
tar czf $BACKUP_DIRECTORY/backup_$curr_date.tgz * --exclude="backups" --exclude="*/wp-content/cache/*"

/usr/bin/gpg -c --force-mdc --batch --yes --passphrase=$GPG_PASSOWRD $BACKUP_DIRECTORY/backup_$curr_date.tgz

echo `date +%H:%M:%S` ": Remove tmp files"
rm /home/db_$curr_date.tgz  /home/etc_$curr_date.tgz /home/root_$curr_date.tgz $BACKUP_DIRECTORY/backup_$curr_date.tgz

echo `date +%H:%M:%S` ": Remove old backup files"

bf=`ls -1 $BACKUP_DIRECTORY/backup*.tgz.gpg | sort -d`
fc=`ls -1 $BACKUP_DIRECTORY/backup*.tgz.gpg | wc -l`

if [ "$fc" -gt "$MAX_FILES" ] ; then
    for file in $bf
    do
        if [ "$fc" -gt "$MAX_FILES" ] ;then
            fc=$(($fc - 1))
            rm -f $file
        fi
    done
fi

echo `date +%H:%M:%S` ": Yandex.Disk sync"
/usr/bin/yandex-disk sync

В планах:
1. сделать сохранение месячных и недельных бекапов
2. подумать над инкрементными ежедневными бекапами (хотя тут наверное проще какую-нибудь Bacula поставить) %)

Опубликовал:

Ubuntu на Asus X55SV и звук в наушники

Давеча (месяц уже) поставил убунту на бук, вроде все было нормально, но тут обнаружился странный косяк, при подключении наушников нифига не отключали встроенные колонки, что прямо скажем не комильфо.

Немного порыскав в интернете, нашел решение. Нужно в файлик/etc/modprobe.d/alsa-base.conf добавить строчечку:

options snd-hda-intel model=lenovo-ms7195-dig

после чего перезагрузился и все заработало 🙂

PS. как вариант предлагалась еще вот такая строчка:

options snd-hda-intel model=3stack-6ch

PPS. пользуясь случаем попиарю блог товарища seo-оптимизатора, мне пофик, а ему приятно буит 🙂

Опубликовал:
Раздел: Мои новости