Резервне копіювання - важливе завдання, яке необхідно виконувати на будь-якому сервері, де розташовуються важливі дані. Вирішити її можна різними методами. Для великих систем - це відповідне програмне забезпечення, здатне створювати бекапи без помітної затримки в роботі сервера.
Для систем поменше (а-ля сервер з десятком сайтів) завдання можна вирішувати більш простими методами і за допомогою самописних скриптів, які копіюють дані, наприклад, на Яндекс.Діск. Перевага в тому, що не потрібно витрачатися на додатковий сервер (або спеціальне сховище для бекапів, які пропонують деякі хостери). І десяти гігабайт, що виділяються Яндексом, може бути досить.
Можна зареєструвати виділену обліковий запис в Яндексі, а можна скористатися поштовою скринькою на своєму домені, що працює на Пошті для доменів.
Зміст статті:
- Что нужно для такого бэкапа? 1 Що потрібно для такого бекапа?
- Настройка davfs 2 Налаштування davfs
- Создание точки монтирования и записи в /etc/fstab 3 Створення точки монтування і записи в / etc / fstab
- Скрипт резервного копирования 4 Скрипт резервного копіювання
Що потрібно для такого бекапа?
Все, що знадобиться, - це пакет davfs2, за допомогою якого буде монтуватися розділ webdav в системі.
# Aptitude install davfs2
Налаштування davfs
Його конфігураційні файли знаходяться в папці / etc / davfs2. У файлі davfs.conf прописані всі доступні настройки зі значеннями за замовчуванням. Його, поки що, чи не будемо чіпати.
Цікавий другий файл - secrets, що містить логіни, паролі, параметри проксі і сертифікатів. Конкретніше - розділ «Credential Line», де потрібно прописати запис виду:
/ Mnt / yadisk vashemail@yandex.ru vashparol
Перший аргумент - це точка монтування, другий - ваша пошта в Яндексі (логін), третя - пароль. Це все, що потрібно вказати.
Створення точки монтування і записи в / etc / fstab
Розділ потрібно кудись монтувати. Як видно в прикладі вище, це каталог / mnt / yadisk, який можна замінити на свій. Створимо його з правами доступу тільки для root:
# Mkdir -m 0700 / mnt / yadisk
Після чого редагуємо файл / etc / fstab, прописуючи там рядок:
https://webdav.yandex.ru / mnt / yadisk davfs noauto, noexec, nosuid, file_mode = 0600, dir_mode = 0700 0 0
Тут перше - адреса для підключення до Яндекс.Діск, друга - точка монтування, третя - тип файлової системи, четверта - опції.
- noauto - відключає монтування файлової системи при запуску ОС, або командою mount -a
- noexec, nosuid - забороняє запуск виконуваних файлів і установку suid / sgid бітів на файли і папки.
- file_mode / dir_mode - встановлює права доступу до файлів і папок відповідно тільки для власника (root, якщо не вказано користувач і група в параметрах uid і gid
Чому б не монтувати розділ автоматично? Він потрібен тільки під час резервного копіювання. А після буде а) висіти без діла, б) буде споживати невелику кількість трафіку, синхронізуючи вміст.
Після збереження fstab можна перевірити, чи коректно монтується розділ командою mount / mnt / yadisk.
Скрипт резервного копіювання
У мене на сервері трохи сайтів. В основному, контент змінюється нечасто і можна скористатися методом повного копіювання.
Для цих цілей написав невеличкий простенький скрипт на bash.
#! / Bin / bash # Ініціалізувавши змінні BACKUPDIR = "/ var / tmp" # Каталог для бекапів TMPDIR = "backup" # Тимчасова папка для копій файлів, яка потім архівується YADISK = "/ mnt / yadisk" # Точка монтування SQLDIR = "sqldb" # Папка для баз даних SQLUSER = "root" SQLPASS = "12345" TIMEY = $ (date +% F_% H% M% S) # Час в форматі РІК-МІСЯЦЬ-ДЕНЬ_часмінутасекунда # Перевіряємо наявність папки для баз даних, якщо її немає, створюються всі необхідні. if [! -d "$ BACKUPDIR / $ TMPDIR / $ SQLDIR"]; then mkdir -p -m 0700 "$ BACKUPDIR / $ TMPDIR / $ SQLDIR" fi # Підключаємо Яндекс.Діск mount "$ YADISK" # Створюємо бекапи # 1 баз даних cd "$ BACKUPDIR / $ TMPDIR / $ SQLDIR" for database in `mysql -s -r -e 'SHOW DATABASES' | grep -v Database | grep -v information_schema | grep -v performance_schema | grep -v mysql`; do mysqldump "$ database"> "$ database" .sql; done # 2 Всіх користувачів cd / tar -cf "$ BACKUPDIR" / "$ TMPDIR" /home.tar home # 3 системних налаштувань tar -cf "$ BACKUPDIR" / "$ TMPDIR" /system.tar etc var / spool / cron / crontabs # Упаковуємо в bzip-архів cd "$ BACKUPDIR" tar -cjf backup - "$ TIMEY" .tbz2 "$ TMPDIR" mv backup - "$ TIMEY" .tbz2 "$ YADISK" # Видаляємо тимчасові файли rm -r "$ TMPDIR" # Видаляємо старі архіви find "$ YADISK" -type f -mtime +4 | xargs rm -f # Відключаємо Яндекс.Діск umount "$ YADISK" exit 1
Він запускається двічі на добу по крону. Створює копії баз даних, певних системних налаштувань, а також призначених для користувача даних (сайти). Частково він складається з скрипта для копіювання тільки баз даних , опублікованого раніше.
Іноді в syslog-е може з'являтися помилка:
mount.davfs: open files exceed max cache size by 50 MiBytes
В цьому випадку монтуємо розділ Яндекс.Діск і дивимося, що лежить в папці lost + found. Вичищаємо її. Потім вичищаємо вміст папки / var / cache / davfs2 /.