IT Blog - point net
"паять нужно только то, что нельзя починить с помощью ассемблера!" (с)

Резервное копирование файлов Samba

Продолжая тему резервного копирования, расскажу о создании системы резервного копирования файлового хранилища под управлением FreeBSD.


Цели и задачи

Есть небольшое предприятие, с установленным сервером FreeBSD 10, выполняющим одновременно кучу разных функций, в том числе файлового сервера samba (типичная ситуация для большинства небольших контор). На сервере есть ряд папок требующих пристального внимания - важные документы, база 1С и т.д. Необходимо организовать их автоматическое резервное копирование, скажем 1 раз в неделю с минимальными затратами.

Решение

Поскольку задачу необходимо решить именно с минимальными затратами, о подключении дополнительного HDD речи не идёт, используем обычную флешку, в моём случае это Transend 32Gb.

И так, втыкаем флешку в сервер и получаем имя нашего накопителя:

#ls /dev/da*
/dev/da0s1

Монтируем флешку в каталог /root/usb (на ваше усмотрение, где удобнее главное - каталог должен быть создан заранее!):
#mount_msdosfs /dev/da0s1 /root/usb

Вариант монтирования с поддержкой кириллицы:

#mount_msdosfs -L ru_RU.UTF-8 /dev/da0s1 /root/usb

При необходимости отмонтировать с целью переноса информации, замены флеш накопителя и т.д.:

#umount -f /root/usb

Далее рисуем скрипт такого вида:

#!/bin/sh
date=`date "+%Y%m%d"`


# Каталог для хранения бэкапа, в нашем случае это каталог с монтированной флешкой
path="/root/usb/"
mkdir ${path}/temp


# Я добавил в архив системные файлики и настройки сервера пусть будут,
# места много не занимают, а польза ощутимая при "итимать, сервак упал!"
echo "Сохранение каталога /etc"
cp -r /etc ${path}/temp/etc
echo "Сохранение каталога /usr/local/etc"
cp -r /usr/local/etc ${path}/temp/usr_local_etc


# Сохраняем каталог с базой 1С:
echo "Сохранение каталога /usr/local/samba/1C/Base"
cp -r /usr/local/samba/1C/Base ${path}/temp/usr_local_samba_1C_Base


# Сохраняем каталог с важными/"секретными" документами:
echo "Сохранение каталога /usr/local/samba/base/VIP"
cp -r /usr/local/samba/base/VIP ${path}/temp/usr_local_samba_base_VIP


chown -R root:wheel ${path}/*
echo "Создание архива резервной копии..."
cd ${path}/temp/
tar czf ${path}/backup_${date}.tar.gz ./*
rm -r ${path}/temp
echo "Выполнено. Имя файла: backup_${date}.tar.gz"


echo "Удаление архива старше 60ти дней..."
find ${path} -mtime +60 -type f -name "*.gz" -delete
echo "...устаревшие архивы удалены"


exit 0

Здесь необходимо учесть, что архиватор криво работает с кириллицей, поэтому файлы документов в папке для архивации, должны быть поименованы латинскими буквами, например vajnoe_spisok.doc

Добавляем скрипту права на выполнение:

#chmod ugo+x /root/backup/backup.sh

Осталось настроить Cron на выполнение нашего скрипта по расписанию. Открываем /etc/crontab и добавляем такую строчку:

25 1 * * 0 root /root/backup/backup.sh

Вот собственно и всё, теперь Cron настроен на выполнение скрипта по расписанию каждое воскресенье в 01:25, а мы получаем гонорар за быстрое выполнение столь "важного и ответственного поручения руководства" и идём пить пиво wink

P.S. Надеюсь, после редактирования кронтаба, вы не забыли перезагрузить Cron? smile

#/etc/rc.d/cron restart

Прошу учесть - я кактусы и шоколадки не пью! (с)

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Комментарий будет опубликован после проверки

Вы можете войти под своим логином или зарегистрироваться на сайте.

(обязательно)