Файловый сервер - громко сказано.
Будем рассматривать файловую помойку, где всем разрешён полный доступ к файлам и нет разграничения прав.
То есть - наиболее распространённый вариант хранения важной документации в компаниях.
Наше резервное копирование будет многоуровневым.
- RAID Файлы должны находиться не на одном жёстком диске, а, как минимум, на зеркальном RAID-массиве. Уже здесь пойдёт дублирование файлов на физически разные устройства.
- Защита от дурака Например, задумчиво вращая мышкой над структурой папок человек случайно ткнул левую кнопку и переместил какой-то каталог в другой, сам того не заметив. Или удалил файл и тут же спохватился. Надо иметь возможность восстановить такие «потери» без обращения к основному архиву.
- Резервное копирование Создание основного архива файлов.
Определимся с путями.
/mnt/storage/ | Точка монтирования для RAID, на котором лежат файлы |
---|---|
/mnt/storage/smb/ | Расшаренная папка |
/mnt/storage/bk/ | Резервные копии «защиты от дурака» |
/mnt/bk/ | Точка монтирования для хранилища архива. Это может быть сторонний samba-сервер, FTP-сервер или просто отдельный винчестер. |
Защита от дурака
Эта команда создаст в /mnt/storage/bk подкаталог smb с меткой текущей даты и времени в формате +%y%m%d-%H%M%S (6 цифр - год, месяц и день, минус, 6 цифр - часы, минуты и секунды), в который вместо файлов зальёт жёсткие ссылки на них.
Другими словами, мы создадим «образ» структуры нашего файлового хранилища.
Плюсы:
- Такой «образ» практически не занимает места на жёстком диске и быстро создаётся, потому что файлы не копируются, на них просто ставятся жёсткие ссылки.
- При «случайном удалении» файла он останется на диске и будет доступен (man ln), то есть его восстановление займёт секунды.
- Структуру папок и файлов можно отследить с той актуальностью, с которой создаётся такой «бэкап».
Минусы:
- При удалении откровенно ненужного файла он будет продолжать занимать дисковое пространство, ровно до тех пор, пока не будет удалена последняя жёсткая ссылка на него.
Внимание:
- Жёсткие ссылки можно создавать только в пределах одной файловой системы.
- Не забывайте удалять старые «образы», автоматически или вручную. Иначе старые файлы будут накапливаться и место на разделе закончится.
- Отредактированный пользователем файл изменится сразу по всем жёстким ссылкам! Это способ хранения структуры каталогов, а не содержимого файлов!
Создание основного архива файлов
Можно использовать способ в лоб:
но это тупо.
Сколько файлов пользователи успеют изменить с предыдущего резервного копирования? Нужно ли тратить дисковое пространство на файлы, которые не изменились?
Поэтому воспользуемся программой rsync.
-a | Режим архивной синхронизации. Симлинки копируются как симлинки, копирование происходит рекурсивно, сохраняются права доступа, владелец и время изменения файла. |
---|---|
-b | Делать копии изменённых файлов. Старый файл переименовывается: к имени добавляется суффикс. Новый файл ложится на его место. |
-v | Показывать подробности операций (см. ниже) |
-x | Не выходить за пределы файловой системы (игнорируются некоторые символические ссылки и mount --bind) |
--suffix | будет дописан в конец старого файла в архиве |
При первом запуске этой команды в /mnt/bk/smb/ ляжет полная копия файлов из /mnt/storage/smb.
При следующих запусках rsync будет копировать только изменённые файлы, причём в архиве будут оставаться и старые версии - с другими именами (со штампом времени в конце). То есть, при желании можно будет проследить эволюцию каждого изменяемого файла и восстановить его за любую дату архивирования.
Модифицируем команду, чтобы вести логи операций - по ним удобно отслеживать изменения в архивной копии.
Если архивирование идёт на удалённый сервер, то лучше не монтировать его в /mnt/bk/, а настроить на нём ещё один rsync и не гонять лишний трафик по сети.
Осталось теперь добавить нужные задания в crontab и только изредка проверять как оно работает.
Внимание! В файле /etc/crontab символы «%» надо экранировать: «\%».
Файл /etc/crontab:
# В 0 часов 5 минут в те же дни и от того же пользователя делаем инкрементный архив всех файлов нашей файлопомойки. 5 0 * * 2-6 bkuser rsync -abvx --suffix="-`date +\%y\%m\%d-\%H\%M\%S`" /mnt/storage/smb /mnt/bk/smb/>/mnt/bk/smb/backup-`date +\%y\%m\%d-\%H\%M\%S`.txt
Проверяем запуск заданий
Ссылки
Работа с FTP как с локальной папкой. CurlFtpFS
Комментарии
Владимир
#cid16564
Ответить
Теряешь информацию об ошибках. Добавь 2>&1
И ещё -- ИМХО имеет смысл добавить сюда информацию и о восстановлении.
#cid16565
Ответить
Да. Заметка старая, поэтому так.
Скоро переделаю.
Владимир
#cid16569
Ответить
#cid16564, Владимир
Поясню на примере -- если ты синхронизируешь с удалением, то может возникнуть ситуация, когда понадобятся удалённые файлы/директории, а если синхронизируешь без удаления, то при восстановлении получишь много ненужного мусора. Твоё решение?
#cid16576
Ответить
#cid16569, Владимир
Если делать как в заметке — из архива удобно восстанавливать только отдельные файлы (рядом с каждым файлом лежат все его редакции).
Восстанавливать каталоги неудобно.
Скоро напишу.
Dj_GLYK
#cid80599
Ответить
извеняюсь....
А есть какоенить решение по типу "защиты от дураков" чтобы файлы которые ты изменяеш автоматически создавали свои не измененные версии куданибудь. Тип бэкап содержимого файла, например, пользователь залез нетуда, и начал изменять не свой файл (у меня это возможно потому что некоторые пользователи сидят с одного компьютера, им вломись пересаживаться на свои учетки вот они и работают под какой захотят), потом спохватился а изменения уже внесены, ну соответственно он не помнит что в нем было. чтобы не ввостанавливаться из архива, а в течении минуты просто заменить измененный файл... или может другие идеи подкинеш. Я ток начинаю строго не судите за глупые вопросы.
#cid82540
Ответить
#cid80599, Dj_GLYK
Борец за грамотную речь только что во мне застрелился.
Такайя хрень даступна только в спетспрогах, черес каторыи файлы будут прагоняться в працессе работы. тоесть работа с файлом будет итти не напрямую а черес прогу, называется "система управления документо оборотом". Больших денег стоит пару лямов запросто. есть свободнгые варианты но там гемор с на стройкой.
К сожалению толька так.
В таких системах так низя. Это ищё один плюз.
А так можна в любых системах. 0т далбаебизма юзеров ничего не спасает.
Я обычно таким говорю: "праблемы китайцев шерифа не волнуют, мозгами надо было думать, сам накасячил - сам восстана вливай, дебила кусок" ну или както так. Ну и не плохо за ранее по лучить от юзера бумагу с под писью, што с по следствиями далбаебизма он о знакомлен и сам дурак.
Самый прастой и железный метод - толька по времени, толька как на писано.
Усе норм, вапросы не глупые.