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

Наше резервное копирование будет многоуровневым.

  1. RAID Файлы должны находиться не на одном жёстком диске, а, как минимум, на зеркальном RAID-массиве. Уже здесь пойдёт дублирование файлов на физически разные устройства.
  2. Защита от дурака Например, задумчиво вращая мышкой над структурой папок человек случайно ткнул левую кнопку и переместил какой-то каталог в другой, сам того не заметив. Или удалил файл и тут же спохватился. Надо иметь возможность восстановить такие «потери» без обращения к основному архиву.
  3. Резервное копирование Создание основного архива файлов.

Определимся с путями.

/mnt/storage/Точка монтирования для RAID, на котором лежат файлы
/mnt/storage/smb/Расшаренная папка
/mnt/storage/bk/Резервные копии «защиты от дурака»
/mnt/bk/Точка монтирования для хранилища архива. Это может быть сторонний samba-сервер, FTP-сервер или просто отдельный винчестер.

Защита от дурака

cp -lr /mnt/storage/smb /mnt/storage/bk/smb-`date +%y%m%d-%H%M%S`/

Эта команда создаст в /mnt/storage/bk подкаталог smb с меткой текущей даты и времени в формате +%y%m%d-%H%M%S (6 цифр - год, месяц и день, минус, 6 цифр - часы, минуты и секунды), в который вместо файлов зальёт жёсткие ссылки на них.

Другими словами, мы создадим «образ» структуры нашего файлового хранилища.

Плюсы:

  • Такой «образ» практически не занимает места на жёстком диске и быстро создаётся, потому что файлы не копируются, на них просто ставятся жёсткие ссылки.
  • При «случайном удалении» файла он останется на диске и будет доступен (man ln), то есть его восстановление займёт секунды.
  • Структуру папок и файлов можно отследить с той актуальностью, с которой создаётся такой «бэкап».

Минусы:

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

Внимание:

  • Жёсткие ссылки можно создавать только в пределах одной файловой системы.
  • Не забывайте удалять старые «образы», автоматически или вручную. Иначе старые файлы будут накапливаться и место на разделе закончится.
  • Отредактированный пользователем файл изменится сразу по всем жёстким ссылкам! Это способ хранения структуры каталогов, а не содержимого файлов!

Создание основного архива файлов

Можно использовать способ в лоб:

cp -r /mnt/storage/smb /mnt/bk/smb-`date +%y%m%d-%H%M%S`/

но это тупо.

Сколько файлов пользователи успеют изменить с предыдущего резервного копирования? Нужно ли тратить дисковое пространство на файлы, которые не изменились?

Поэтому воспользуемся программой rsync.

rsync -abx --suffix="-`date +%y%m%d-%H%M%S`" /mnt/storage/smb /mnt/bk/smb/
-aРежим архивной синхронизации. Симлинки копируются как симлинки, копирование происходит рекурсивно, сохраняются права доступа, владелец и время изменения файла.
-bДелать копии изменённых файлов. Старый файл переименовывается: к имени добавляется суффикс. Новый файл ложится на его место.
-vПоказывать подробности операций (см. ниже)
-xНе выходить за пределы файловой системы (игнорируются некоторые символические ссылки и mount --bind)
--suffixбудет дописан в конец старого файла в архиве

При первом запуске этой команды в /mnt/bk/smb/ ляжет полная копия файлов из /mnt/storage/smb.
При следующих запусках rsync будет копировать только изменённые файлы, причём в архиве будут оставаться и старые версии - с другими именами (со штампом времени в конце). То есть, при желании можно будет проследить эволюцию каждого изменяемого файла и восстановить его за любую дату архивирования.

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

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

Если архивирование идёт на удалённый сервер, то лучше не монтировать его в /mnt/bk/, а настроить на нём ещё один rsync и не гонять лишний трафик по сети.


Осталось теперь добавить нужные задания в crontab и только изредка проверять как оно работает.

Внимание! В файле /etc/crontab символы «%» надо экранировать: «\%».

Файл /etc/crontab:

... # В 0 часов 1 минуту со вторника по субботу, от имени пользователя bkuser делаем сохранение структуры файлов и каталогов 1 0 * * 2-6 bkuser cp -lr /mnt/storage/smb /mnt/storage/bk/smb-`date +\%y\%m\%d-\%H\%M\%S`/
# В 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

Проверяем запуск заданий

cat /var/log/syslog | grep CRON
... [Mon] [Day] 00:01:01 gw /USR/SBIN/CRON[...]: (bkuser) CMD (cp -lr /mnt/storage/smb /mnt/storage/bk/smb-`date +%y%m%d-%H%M%S`/) [Mon] [Day] 00:05:01 gw /USR/SBIN/CRON[...]: (bkuser) CMD (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

man rsync на русском


Владимир
2012.02.21 14:34:53
#cid16564

Ответить

Модифицируем команду, чтобы вести логи операций - по ним удобно отслеживать изменения в архивной копии.
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

Теряешь информацию об ошибках. Добавь 2>&1

И ещё -- ИМХО имеет смысл добавить сюда информацию и о восстановлении.

2012.02.21 15:02:46
#cid16565

Ответить

Теряешь информацию об ошибках. Добавь 2>&1

Да. Заметка старая, поэтому так.

И ещё -- ИМХО имеет смысл добавить сюда информацию и о восстановлении.

Скоро переделаю.

Владимир
2012.02.21 15:22:50
#cid16569

Ответить

#cid16564, Владимир

И ещё -- ИМХО имеет смысл добавить сюда информацию и о восстановлении.

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

2012.02.21 17:34:04
#cid16576

Ответить

#cid16569, Владимир

Если делать как в заметке — из архива удобно восстанавливать только отдельные файлы (рядом с каждым файлом лежат все его редакции).
Восстанавливать каталоги неудобно.

Твоё решение?

Скоро напишу.

Dj_GLYK
2013.11.27 08:57:50
#cid80599

Ответить

извеняюсь....

А есть какоенить решение по типу "защиты от дураков" чтобы файлы которые ты изменяеш автоматически создавали свои не измененные версии куданибудь. Тип бэкап содержимого файла, например, пользователь залез нетуда, и начал изменять не свой файл (у меня это возможно потому что некоторые пользователи сидят с одного компьютера, им вломись пересаживаться на свои учетки вот они и работают под какой захотят), потом спохватился а изменения уже внесены, ну соответственно он не помнит что в нем было. чтобы не ввостанавливаться из архива, а в течении минуты просто заменить измененный файл... или может другие идеи подкинеш. Я ток начинаю строго не судите за глупые вопросы.

2013.12.10 09:28:48
#cid82540

Ответить

#cid80599, Dj_GLYK

А есть какоенить решение по типу "защиты от дураков" чтобы файлы которые ты изменяеш автоматически создавали свои не измененные версии куданибудь.

Борец за грамотную речь только что во мне застрелился.

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

К сожалению толька так.

Тип бэкап содержимого файла, например, пользователь залез нетуда, и начал изменять не свой файл

В таких системах так низя. Это ищё один плюз.

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

А так можна в любых системах. 0т далбаебизма юзеров ничего не спасает.

потом спохватился а изменения уже внесены, ну соответственно он не помнит что в нем было.

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

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

Самый прастой и железный метод - толька по времени, толька как на писано.

Я ток начинаю строго не судите за глупые вопросы.

Усе норм, вапросы не глупые.