Архив категории ‘Администрирование’

Linux: Backup and Restore Mysql

mysql_backup_restore

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

1. Бекап mysql.

Бекап будет жить в «/opt/backup/mysql/» папки с именами баз создаются автоматически. В зависимости от целей и размеров базы, необходимо решить, как мы будем бекапиться:

«month day» — создаст архивы с затиркой по дням месяца
«week day» — создаст архивы по дням недели.

#!/bin/sh

mysqldump="mysqldump"
mysqlparam="-u <user_from_backup> -p<password_from_backup>"

bzip2="bzip2"

mysqlcheck -Ao ${mysqlparam}

databases=`echo "show databases" | mysql ${mysqlparam} | grep -v "^D"`

dstdir="/opt/backup/mysql/"

# back it up
for dbs in $databases
do
mkdir ${dstdir}/$dbs
#month day
mysqldump $mysqlparam $dbs | gzip > ${dstdir}/$dbs/`date +%d.$dbs.sql`.gz
#week day
#mysqldump $mysqlparam $dbs | gzip > ${dstdir}/$dbs/`date +%u.$dbs.sql`.gz
done

Восстановление из бекапа:

Дописываем в начало выгрузки строчку

CREATE DATABASE IF NOT EXISTS `mydatabase`;

mysql -u <user_from_backup> -p  < sql_file.sql
В приглашении вводит пароль.

Или если у нас архив:
gunzip -c дамп.gzip | mysql -u <user_from_backup> -p

FFmpeg базовые команды

FFmpeg базовые команды

В прошлом посте я рассказал как установить FFmpeg на CentOS 6.4.

В данном посте я рассмотрю базовые команды, которые существенно облегчат работу с FFMpeg.  Огромное количество информации содержится в мануалах, они как известно рулез, так что если какая-то информация оказалась за пределами поста, «man ffmpeg» вам в помощь.

Для понимания, более простых конструкций, например такой:


ffmpeg -ss 5 -i a.mp4 -aspect 4:3 -f image2 -r 1 -vframes 300 a%2d.jpg

чуть ниже я перечислю наиболее часто используемые опции.

(далее…)

FFmpeg на CentOS 6.4

ffmpeg linux centos 6.4

UPD 22.07.2018: Для CentOS 7 существует более простой способ установки описанный в knowledgebase: https://shurshun.ru/knowledgebase/ustanovka-ffmpeg-na-centos-7/

На одном из своих проектов, возникла необходимость работы с видео файлами. Прорешерстив Интернет, выбор пал на FFmpeg, который по сути является удобной «оберткой-конвертером» к существующим видео и аудио кодекам, с интерфейсом командной строки. В репозитариях необходимого пакета не оказалось, те что оказались, вызывали некоторые нарекания в работе, поэтому сам кодировщик и сопутствующие библиотеки были собраны из дистрибутивов.

На сервере — свежая СentOS 6.4, правда почему-то 32-битная. В моем случае (тестирование) это особо роли не сыграло.


[root@test /]# cat /etc/issue
CentOS release 6.4 (Final)
Kernel \r on an \m

[root@test /]# uname -a
Linux shurshun 2.6.32-358.6.1.el6.i686 #1 SMP Tue Apr 23 18:13:20 UTC 2013 i686 i686 i386 GNU/Linux

Оговорюсь сразу. Я нашел как минимум 2 подхода к установке FFmpeg.

(далее…)

$ svn update. Conflict discovered…

Conflict discovered in 'services.html'.
Select: (p) postpone, (df) diff-full, (e) edit,
        (mc) mine-conflict, (tc) theirs-conflict,
        (s) show all options: p
C    services.html
Обновлено до редакции 11.
Summary of conflicts:
  Text conflicts: 1

При обновлении был обнаружен конфликт в файле. Нам предложено выбрать действие для его решения:

  • (e) edit — редактировать файл с изменениями;
  • (df) diff-full — показать все конфликтующие изменения;
  • (r) resolved — принять файл, содержащий маркеры слияния конфликтующих изменений;
  • (dc) display-conflict — показать все конфликты;
  • (mf) mine-full — принять свою версию и игнорировать полученные изменения;
  • (tf) theirs-full — принять полностью полученную версию файла и отказаться от своих изменений;
  • (p) postpone — отметить конфликт и разрешить его позднее;
  • (l) launch — использовать внешние средства для разрешения конфликта.

Поставить статус разрешенного конфликта:

svn resolved

Рекурсивное добавление всех файлов и папок в систему контроля версий svn: svn add –force *

Linux: локальная 0-day уязвимость

Тролинг дня «а как собрать ядро, что бы запускался експлойт?» (c) aztec

 

linux

В ядре Linux обнаружена ранее неизвестная 0-day уязвимость (CVE-2013-2094), позволяющая получить root-доступ произвольному пользователю. Проблему усложняет то, что ошибка существовала на протяжении последних 2-3 лет и присутствует во всех ядрах, начиная с 2.6.37 и включая 3.8.8 (ядра 3.9.x проблеме не подвержены).

Уязвимость вызвана ошибкой в коде подсистемы PERF_EVENTS, которая должна быть активирована для успешной эксплуатации уязвимости (в большинстве дистрибутивов ядро собрано поддержкой PERF_EVENTS). Пользователи RHEL 6 и CentOS 6, несмотря на использование ядра 2.6.32, не застрахованы от данной ошибки — проблемный код был успешно бэкпортирван Red Hat в пакет с ядром, поставляемом в RHEL.

Патч с устранением проблемы был принят в состав ядра 3.8.9 в апреле, без уведомления о том, что он связан с устранением уязвимости. В дистрибутивах уязвимость пока остаётся неисправленной.

(далее…)

Synology: восстановление шифрованных данных

У линейки NAS Synology есть возможность шифрования пользовательских директорий. С точки зрения  пользователя и производительности данный процесс проходит незаметно. С точки зрения восстановления данных в случае физического выхода из строя непосредственно Synology возникают вопросы.

Решение достаточно простое.

Попробуем зашифровать данные на synology и восстановить их на другом компьютере под управлением linux.

1. Создаем папку «test»

syn1

В консоли она выглядит как:

DiskStation> mount
/volume2/@test@ on /volume2/test type ecryptfs (rw,ecryptfs_sig=d1a01d50c3f21e00,ecryptfs_fnek_sig=d1a01d50c3f21e00,ecryptfs_cipher=aes,ecryptfs_key_bytes=32)
DiskStation>

(далее…)

Backup Mysql таблиц по префиксу таблицы

mysql_backup

Один из самых простых вариантов сделать бекап mysql базы, это воспользоваться утилитой mysqldump

Если в синтаксис добавить параметр «—tables», то можно описать какие именно таблицы нам надо бекапить.

mysqldump  -umysqluser -pmysqlpassword  --tables  prefix_tableA prefix_tableB >`date +%u.basename.sql`

Недостатком данного способа является не восприятие параметра «—tables» к регулярным выражениям, т.е. в качестве аргумента нельзя передать например «prefix_*» (сделать бекап таблицы по определенному префиксу)

Ниже решение, которое вполне восполняет данный пробел.
Как видно из синтаксиса, начальный SQL запрос дает нам достаточно широкие возможности по манипуляциям списком таблиц для резервного копирования.

mysql  -umysqluser -pmysqlpassword -e 'show tables like "prefix_%"' 
| grep -v Tables_in 
| xargs mysqldump  -umysqluser -pmysqlpassword --skip-triggers >`date +%u.basename.sql`