Файловый сервер - громко сказано.
Будем рассматривать файловую помойку, где всем разрешён полный доступ к файлам и нет разграничения прав.
То есть - наиболее распространённый вариант хранения важной документации в компаниях.
Наше резервное копирование будет многоуровневым.
Определимся с путями.
/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 цифр - часы, минуты и секунды), в который вместо файлов зальёт жёсткие ссылки на них.
Другими словами, мы создадим «образ» структуры нашего файлового хранилища.
Плюсы:
Минусы:
Внимание:
Можно использовать способ в лоб:
но это тупо.
Сколько файлов пользователи успеют изменить с предыдущего резервного копирования? Нужно ли тратить дисковое пространство на файлы, которые не изменились?
Поэтому воспользуемся программой rsync.
-a | Режим архивной синхронизации. Симлинки копируются как симлинки, копирование происходит рекурсивно, сохраняются права доступа, владелец и время изменения файла. |
---|---|
-b | Делать копии изменённых файлов. Старый файл переименовывается: к имени добавляется суффикс. Новый файл ложится на его место. |
-v | Показывать подробности операций (см. ниже) |
-x | Не выходить за пределы файловой системы (игнорируются некоторые символические ссылки и mount --bind) |
--suffix | будет дописан в конец старого файла в архиве |
При первом запуске этой команды в /mnt/bk/smb/ ляжет полная копия файлов из /mnt/storage/smb.
При следующих запусках rsync будет копировать только изменённые файлы, причём в архиве будут оставаться и старые версии - с другими именами (со штампом времени в конце). То есть, при желании можно будет проследить эволюцию каждого изменяемого файла и восстановить его за любую дату архивирования.
Модифицируем команду, чтобы вести логи операций - по ним удобно отслеживать изменения в архивной копии.
Если архивирование идёт на удалённый сервер, то лучше не монтировать его в /mnt/bk/, а настроить на нём ещё один rsync и не гонять лишний трафик по сети.
Осталось теперь добавить нужные задания в crontab и только изредка проверять как оно работает.
Внимание! В файле /etc/crontab символы «%» надо экранировать: «\%».
Файл /etc/crontab:
Проверяем запуск заданий
Работа с FTP как с локальной папкой. CurlFtpFS (http://www.it-simple.ru/?p=2785)
man rsync на русском (http://www.opennet.ru/cgi-bin/opennet/man.cgi?topic=rsync)