Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Подправьте скрипт для бэкапа на bash  (Прочитано 739 раз)

0 Пользователей и 1 Гость просматривают эту тему.

ponhoax

  • Автор темы
  • Гость
Подправьте скрипт для бэкапа на bash
« : 25 Октября 2014, 18:41:02 »
До этого не имел опыта написания чего-либо, так что нужна помощь. Код снизу создает дамп, бекапит сайт и удаляет старое, и так на несколько баз и сайтов. Правильно ли с переменными поступаю? Или можно как-то логичнее всё сделать?

DATE=(date +%F)
UTF=--default-character-set=utf8
MTIME=-type f -mtime +14 -exec rm {} \;
BC_DIR=/home/backup/BACKUPDIR1/
BC_DIR2=/home/backup/BACKUPDIR2/
BC_DIR3=/home/backup/BACKUPDIR3/

#backupsite1.ru
mysqldump -h HOST -u USERNAME -p PASSWORD --database DATABASE $UTF > $BC_DIR$DATE.sql`#Дамп базы

find $BC_DIR $MTIME #Удаляет старые
tar -zcvf $BC_DIR"$DATE.tar.gz" /home/www/backupsite1.ru/ #Создает новые

#backupsite2.ru
...
« Последнее редактирование: 25 Октября 2014, 18:42:35 от ponhoax »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Подправьте скрипт для бэкапа на bash
« Ответ #1 : 25 Октября 2014, 19:09:58 »
По своему опыту, могу вам сказать, что это всё костыли и велосипедостроение.
Правильное решение — rsnapshot.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Подправьте скрипт для бэкапа на bash
« Ответ #2 : 25 Октября 2014, 20:13:19 »
ponhoax, это заблуждение новичков.
Примерно так же бредово, как писать CAD или GIS на ассемблере.

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля

Оффлайн Dexel

  • Активист
  • *
  • Сообщений: 295
    • Просмотр профиля
Re: Подправьте скрипт для бэкапа на bash
« Ответ #4 : 25 Октября 2014, 22:23:26 »
Часть, где сохраняется mysql:
echo $'\nСохранение баз данных MySQL'

mkdir -p "$bdir/db/mysql"
pass=пассворд_рута_мускула
dbs=$(mysql --password=$pass -u root -e 'show databases' --skip-column-names -B)
dbs=$(echo "$dbs" | grep -v performance_schema | grep -v information_schema)
opts='--extended-insert=FALSE --events --ignore-table=mysql.events'
for db in ${dbs}; do
    dbf="$bdir/db/mysql/${db}.sql"
    mysqldump --password=$pass -u root $opts $db > "$dbf"
    echo "База: $db"
done
# Сохранение файла соответствия database-user mysql
query="use mysql; select CONCAT(Db,'|',User) from db order by Db"
dbustxt=$(mysql --password=$pass -u root -e "$query" --skip-column-names)
echo "$dbustxt" > "$bdir/db/mysql/db_users.txt"

 

Страница сгенерирована за 0.045 секунд. Запросов: 25.