Резервное копирование на Yandex диск

Приведу пример скрипта для копирования резервных копий на Yandex диск

На тесте работаю в системе Ubuntu и выполняю команды от root пользователя через sudo.

В системе должен быть установлен curl или установим его командой:

sudo apt-get install curl

Сначала создадим пустой файл для скрипта:

sudo touch backup_to_yandex.sh

Укажем минимальные права доступа к файлу, чтобы другие пользователи не могли открыть, ведь в файле будет хранится пароль к yandex:

sudo chmod 0700 backup_to_yandex.sh

Откроем файл в каком нибудь текстовом редакторе, например nano (клавиши Ctrl+X для выхода, y/n для сохранения или отмены изменений):

sudo nano backup_to_yandex.sh

И добавим следующее содержимое в файл (если работать через putty, то можно вставить содержимое буфера обмена кликнув правой кнопкой мыши):

#!/bin/bash

Путь к файлам присвоим переменным чтобы в дальнейшем их было проще указывать по несколько раз
$FILE1=/tmp/etc_`date +%Y-%b`.tar.gz
$FILE2=/tmp/sql_`date +%Y-%b`.sql.gz

# Например сначала запакуем в архив директорию /etc
tar -czf $FILE1 /etc

# Сделаем дамп всех mysql баз
mysqldump -u ПОЛЬЗОВАТЕЛЬ --password=ПАРОЛЬ --all-databases | gzip > $FILE2

# Теперь отправим эти два файла на Yandex диск (файлы указываем через запятые)
curl --user ПОЛЬЗОВАТЕЛЬ:ПАРОЛЬ -T "{$FILE1,$FILE2}" https://webdav.yandex.ru/

# Теперь удалим их, так как они уже на Yandex диске
unlink $FILE1
unlink $FILE2 

Можно также при архивировании устанавливать пароль на архив, смотрите мои более подробные статьи на эту тему:
RAR и ZIP архивирование в Linux
RAR архивы в Linux Ubuntu

Скрипт можно добавить в планировщик Cron для автоматического запуска — Использование и настройка CRON

Скрипт архивирования файлов за прошлый месяц

Понадобилось как-то написать скрипт который должен был каждого первого числа архивировать из одной папки только файлы с датой прошлого месяца, помещать архив в отдельную директорию и удалять файлы которые архивировались.

Вот собственно сам скрипт:

zip -rm -tt $(date +%Y-%m-01) -t $(date +%Y-%m-01 -d 'last month') "/srv/samba/archive/$(date +%Y-%m-%d)" /srv/samba/dir/

Пример добавления в /etc/crontab для автоматического запуска каждого первого числа месяца в 9 часов 30 минут:

30 9 1 * * root /backups/scripts/ktb/zip_checks.sh > /dev/null 2>&1

Скрипт резервного копирования конфигурации DOCSIS ARRIS Cadant C3 CMTS

Собственно вот мой скрипт:

#!/bin/bash
# Backup DOCSIS CADANTS config
(
sleep 5
echo "user"
sleep 5
echo "password"
sleep 5
echo "enable"
sleep 2
echo "password"
sleep 2
echo "copy startup-configuration tftp://192.168.0.1/cadant1.xml"
sleep 5
echo "exit"
) | telnet 192.168.0.50
mv /srv/tftp/cadant1.xml /backups/devices/docsis/`date +%Y-%m-%d`_cadant1.xml

Где 192.168.0.50 — cadant, 192.168.0.1 — tftp сервер.

Вы можете добавить скрипт в /etc/crontab для автоматического выполнения (например, каждый день в час ночи):

0 1 * * * root /path/to/script/backup_cadants.sh > /dev/null 2>&1

Резервное копирование конфигурации BDCOM P3310B-2AC

Набросал скрипт для автоматического резервного копирования конфигурации BDCOM P3310B-2AC EPON.

Читать далее «Резервное копирование конфигурации BDCOM P3310B-2AC»

Установка и использование rsync в Linux

rsync (Remote Synchronization) — программа выполняющая синхронизацию файлов и каталогов.

Для начала установим rsync.
Пример команды установки для CentOS:

yum -y install rsync

Для Debian/Ubuntu:

sudo aptitude install rsync

Приведу пример локальной синхронизации:

sudo rsync -avh --delete /var/www/ /root/backup/www/

Синхронизация данных на удаленный сервер:

sudo rsync -avh --delete /var/www/ root@192.168.1.50:/root/backup/www/

Синхронизация данных на локальный с удаленного сервера:

sudo rsync -avh root@192.168.1.50:/var/www/ /root/backup/www/

Через SSH с нестандартным портом:

sudo rsync -avh -e "ssh -p 1111" root@192.168.1.50:/var/www/ /root/backup/www/

Чтобы исключить какие нибудь поддиректории, например если мы синхронизируем /var/www/ и хотим исключить /var/www/dir/ и /var/www/dir/tmp/, то можно добавить к команде:

--exclude='dir/' --exclude='dir/tmp/'

Чтобы переместить файлы с удаленного сервера на локальный:

sudo rsync -avh --remove-source-files root@192.168.1.50:/var/www/ /var/www/

Пример копирования mysql данных на другой диск:

rsync -vrplogDtH –progress /var/lib/mysql/ /newhdd/var/lib/mysql/

Приведу пример своего скрипта резервного копирования (последняя строка удаляет директории старше 30 дней):

mkdir /root/backup/`date +%Y-%m-%d`
cd /root/backup/`date +%Y-%m-%d`
sudo rsync -avh -e "ssh -p 1111" --log-file=/root/backup/`date +%Y-%m-%d`/rsync.log root@192.168.1.50:/var/www/* /root/backup/`date +%Y-%m-%d`/
find /root/backup -type d -mtime +30 | xargs rm -f -r

Встроенную справку можно получить командой:

man rsync

В файле /etc/default/rsync можно настройки запуск rsync как демона.
При синхронизации с другими серверами на них тоже должен быть установлен rsync либо нужно указывать SSH.

Опишу возможные параметры запуска:
-v (—verbose, подробный режим)
-r (—recursive, копировать данные рекурсивно)
-R (—relative, использовать относительные пути при создании символических ссылок)
-a (—archive, режим архивирования, копировать данные рекурсивно с сохранением симлинков, прав доступа и прочей информации)
-b (—backup, создание резервной копии, смотрите дополнительно —backup-dir=DIR и —suffix=SUFFIX)
-c (—checksum, сверка по контрольным суммам, а не по времени изменения и размеру)
—delete (удаление файлов)
-f (—filter=RULE, создание правила фильтрования)
-h (—human-readable, вывод данных в понятном для человека формате, смотрите также —progress)
-H (—hard-links, сохранение жестких ссылок)
-n (—dry-run, пробный режим без каких либо изменений)
-p (—perms, сохранение прав)
-z (—compress, сжатие данных при передаче, смотрите также —compress-level=NUM и —skip-compress=LIST)
-x (—one-file-system, не выходить за пределы текущей точки монтирования)
-q (—quiet, краткий режим)
-W (—whole-file, полное копирование вместо копирования изменившихся данных)

Как настроить подключение по SSH без ввода пароля смотрите в этой статье — Подключение к SSH с использованием ключей

Резервное копирование конфигурации Ubiquiti (UBNT) устройств

Били грозы как-то наши Ubiquiti (UBNT) антенны, которые потом приходилось ремонтировать, менять и естественно наново настраивать. Поэтому решил сделать автоматическое копирование конфигурации.

Читать далее «Резервное копирование конфигурации Ubiquiti (UBNT) устройств»

Резервное копирование конфигурации коммутаторов и прочего сетевого оборудования

Сегодня придумал скрипт резервного копирования конфигурации коммутаторов через telnet.
Идея возникла когда понадобилось делать резервные копии конфигурации главной станции GPON.

Содержимое моего скрипта:

#!/bin/bash
# For GPON MA56XX

(
sleep 5
echo "root"
sleep 5
echo "password"
sleep 5
echo "enable"
sleep 2
echo "backup configuration tftp 192.168.1.1 gpon.cfg"
sleep 2
echo "y"
sleep 10
echo "quit"
sleep 2
echo "y"
) | telnet 192.168.1.2
mv /srv/tftp/gpon.cfg /home/backups/now/switches/gpon/`date +%Y-%m-%d`_gpon.cfg

Содержимое поместим в файл к примеру backup_cfg.sh, сделаем файл исполняемым и добавим в /etc/crontab строку для авто выполнения скрипта например каждый день в 5 утра:

0 5 * * * root /home/backups/scripts/backup_cfg.sh > /dev/null 2>&1

Как запустить tftp сервер смотрите в моих статьях: Установка и настройка TFTP сервера в Ubuntu или Запуск TFTP сервера на Windows.
Смотрите также: Использование и настройка CRON

Как создать резервную копию NVRAM MTK устройства используя ADB

На примере использую Lenovo a630t с MTK 6577.

И так, для создания резервной копии NVRAM используя ADB, на аппарате обязательно необходимо наличие root-прав.

Опишу порядок действий:

1) Включенный телефон подключим к компьютеру стандартным MicroUSB кабелем, в настройках телефона включим отладку по USB (Как на Android включить отладку по USB) и установим драйверы.

2) Скачаем и распакуем архив по короткому пути без использования кириллических букв nvram_backup_restore_MT6577-6589_wo_root-shell

3) Запустим nv_backup.bat, когда появится запрос нажать любую клавишу для продолжения, нажмем на клавиатуре Enter. В телефоне скорее всего потребуется подтвердить запрос root прав.

По окончанию в каталоге программы появится файл nvram.img, это и есть копия NVRAM устройства.

Все.

Резервное копирование Zabbix

Придумал и набросал пару строк для резервного копирования mysql базы данных и директории с http файлами.

Первым делом делаем копию mysql базы данных zabbix (ключом —ignore-table исключим ненужные таблицы с историей, так как они могу занимать гигабайты) и архивируем ее:

mysqldump --ignore-table=zabbix.history --ignore-table=zabbix.history_uint --ignore-table=zabbix.trends --ignore-table=zabbix.trends_uint -u ПОЛЬЗОВАТЕЛЬ -h localhost -pПАРОЛЬ zabbix | gzip -c > /backups/zabbix_`date +%Y-%m-%d`.sql.gz

Вторым шагом будет архивация http файлов zabbix:

tar -cvjf /backups/`date +%Y-%m-%d`_zabbix.tar.bz2 /usr/share/zabbix/

Вместо директории /backups/ можно монтировать и указать какой нибудь сетевой диск из интернета и на него делать резервные копии.
Обе строки можно добавить в /etc/crontab чтобы копии выполнялись например ежедневно, или добавить их в файл, а в /etc/crontab/ указать путь к этому файлу, вот например каждый день в 3 утра:

0 3 * * * ПОЛЬЗОВАТЕЛЬ СТРОКА > /dev/null 2>&1

(где в качестве пользователя указывается существующий пользователь в системе от имени которого будет выполнятся команда, а в качестве строки указанная выше команда или путь к исполняемому файлу с списком указанных выше команд)
Пример с указанием на файл:

0 3 * * * root /backups/script.sh > /dev/null 2>&1

Смотрите также: Немного о CRON

Вариант резервного копирования в Windows (winrar+bat)

Вариант резервного копирования файлов с помощью winrar в Windows:

Создадим файл с расширением *.bat и добавам в него содержимое:

set rar_path="C:\Program Files\WinRAR\rar.exe"
set backup_path=D:\Backup\
set archive_name=backup-file_all -ag_DD.MM.YYYY
%rar_path% a -r -m2 -dh -ow -ppassword %backup_path%%archive_name% D:\files\*.*

Или можно указать список файлов и категорий для архивирования в текстовом файле:

set rar_path="C:\Program Files\WinRAR\rar.exe"
set backup_path=D:\Backup\
set archive_name=backup-file_all -ag_DD.MM.YYYY
set backup_list=@D:\Backup\backuplist.txt
%rar_path% a -r -m2 -dh -ow -ppassword %backup_path%%backup_list%%archive_name%

Ключи winrar:
-ac Снять атрибут «архивный» после архивации или извлечения
-ad Добавить к пути назначения имя архива
-af Указать формат архива
-ag[формат] Добавить к имени архива текущую дату и время
-ao Добавить файлы с установленным атрибутом «архивный»
-ap Установить путь внутри архива
-as Синхронизировать содержимое архива
-av Добавить электронную подпись
-av- Запретить добавление/проверку электронной подписи
-cfg- Игнорировать профиль по умолчанию и переменную окружения
-cl Преобразовать имена файлов в нижний регистр
-cu Преобразовать имена файлов в верхний регистр
-df Удалить файлы после архивации
-dh Открывать совместно используемые файлы
-ds Не сортировать файлы при архивации
-ed Не добавлять пустые папки
-en Не добавлять блок «конец архива»
-ep Исключить пути из имён
-ep1 Исключить из пути базовую папку
-ep2 Сохранять полные пути файлов
-ep3 Сохранять полные пути, включая букву диска
-e[+] Задать исключение или включение файлов из/в обработку по маске атрибутов
-f Освежить имеющиеся файлы
-hp[пароль] Шифровать и данные, и заголовки файлов
-iadm Запрашивать административный доступ для SFX-архива
-ibck Запустить WinRAR как фоновый процесс в системном лотке
-ieml[.][адрес] Отправить архив по электронной почте
-iicon<имя > Указать значок для SFX-модуля
-iimg Указать логотип для SFX-модуля
-ilog[имя] Записывать протокол ошибок в файл
-inul Не выводить сообщения об ошибках
-ioff Выключить компьютер
-k Заблокировать архив
-kb Сохранять на диске файлы, извлечённые с ошибками
-m Установить метод сжатия
-mc Указать дополнительные параметры сжатия
-md Установить размер словаря
-ms[список] Указать типы файлов для архивирования без сжатия
-mt Установить число потоков
-n Включить в обработку только указанный файл
-n@ Включить в обработку только файлы, указанные в файле-списке
-oc Установить NTFS-атрибут «сжатый»
-or Переименовывать файлы автоматически
-os Сохранить потоки NTFS
-ow Обработать информацию о правах доступа к файлам
-o+ Перезаписывать существующие файлы
-o- Не перезаписывать существующие файлы
-p[пароль] Установить пароль
-r Обрабатывать вложенные папки
-r0 Обрабатывать вложенные папки по шаблону
-ri Установить приоритет и время простоя
-rr[N] Добавить информацию для восстановления
-rv[N] Создать тома для восстановления
-s Создать непрерывный архив
-sc[объекты] Указать набор символов (и объекты)
-se Создать непрерывные группы, используя расширения файлов
-sfx[имя] Создать самораспаковывающийся архив
-sl Обрабатывать файлы размером меньше указанного
-sm Обрабатывать файлы размером больше указанного
-sv Создать независимые непрерывные тома
-sv- Создать зависимые непрерывные тома
-s- Запретить создание непрерывных архивов
-t Протестировать файлы после архивирования
-ta Обрабатывать файлы, изменённые после указанной даты
-tb Обрабатывать файлы, изменённые до указанной даты
-tk Сохранять исходное время архива
-tl Установить время архива по самому новому файлу
-tn Обрабатывать файлы не старее, чем указанный период времени
-to Обрабатывать файлы более старые, чем указанный период времени
-ts Сохранить/восстановить время файлов (модификации, создания, последнего доступа)
-u Обновить файлы
-v[k |b|f|m|M|g|G] Создать многотомный архив
-vd Очищать сменный диск перед архивацией на него
-ver[n] Управление версиями файлов
-vn Использовать старую схему именования томов
-vp Делать паузу перед каждым томом
-x<файл > Не обрабатывать указанный файл
-x@<файл-список > Не обрабатывать файлы, указанные в файле-списке
-y Подразумевать ответ «Да» на все запросы
-z Прочитать комментарий архива из файла
— Прервать дальнейший поиск ключей в командной строке