Программа создания добавочных архивных файлов
Программа
подготавливает список изменённых файлов для их
архивирования в режиме "добавочный архив" используя файл
слепка текущего состояния указанных каталогов или списка файлов.
Сравнение с предыдущими вызовами из файла статуса включает в себя:
- время модификации файла;
- размер файла;
- моды доступа rwx;
- владелец и группа владельцев файла;
- тип.
Данная документация подразумевает, что под "файлом"
для сканирования и архивации понимается любой файл любого типа, в том
числе и каталог и прочие специальные файлы.
По умолчанию производит вызов программы tar для создания архива с
именем с форматом текущей даты и номер архива по порядку.
Для детектирования и показа удаленных после предыдущих архиваций в
статусный файл сохраняется номер файла архива.
Стоит учесть, что статусный файл, если это не запрещено опцией -S,
будет изменен при каждом вызове
программы, несмотря на выключенную или прерванную архивацию. При
прерывании архивации в наличии будет предыдущий статусный файл
StFile.bak.
В процессе работы программа производит следующие
действия (каждое опционально):
- загружает предыдущий статусный файл;
- переименовывает его в StFile.bak;
- рекурсивно сканирует указанные каталоги или сканирует файлы
из указанного списка;
- проверяет сканируемые каталоги на предмет указанных исключений,
прекращая рекурсию вглубь при сканировании каталогов;
- проверяет статус найденных файлов на новый/измененный файл
и опционально вносит в новый файл статуса;
- показывает статистику: количество загруженных записей из файла
статуса, количество просканированных файлов, количество новых
и измененных файлов, количество не найденных файлов по сравнению
с присутствующими в статусном файле записями, несжатый суммарный
размер всех файлов, найденных для архивирования;
- показывает не найденные файлы по сравнению с присутствующими
в статусном файле записями с указанием номера архивного файла,
где последний раз был заархивирован этот файл;
- завершает запись нового статусного файла бинарного формата.
Только после этого момента статусный файл можно будет корректно
использовать при следующих вызовах программы;
- генерирует имя файла для архивации по шалону YearMMDD_HHmmss_N.tar.gz,
где MM-месяц, DD-день, HH-час, mm-минута, ss-секунда, N-номер файла
для архивирования, который внесен в статусный файл для новых и измененных
файлов. Текущий номер архива будет на единицу больше от максимального номера,
присутствующего в файле статусов;
- показывает список файлов для архивирования непосредственно или через
опцию -v у программы tar;
- удаляет StFile.bak.
Предупреждение: программа tar должна поддерживать опции
--no-recursion --null -T -
Статусные файлы с разным содержимым сканированных каталогов можно
склеивать в один файл.
Ввод/вывод списка файлов с символом завершения "новая строка" производится
для символов меньше пробелов в экранированном виде C-стиля также как их делает tar
Вызов программы со списком опций:
archseq [-hirNC] [-S|B] [-T|a] [-v[0]] [-s StFile] [-e exclude] DIRECTORIES...
или
archseq [-hirNC] [-S|B] [-T|a] [-v[0]] [-s StFile] [-e exclude] -l|L LIST_OF_FILES
или
archseq -n [-i] [-0] [-s StFile] [-e exclude]
- -h показ этого текста на стандартный вывод и завершение работы с нулевым статусом;
- -i включает показ статистики;
- -r включает показ удаленных файлов. Каждый файл сопровождается
префиксом '-' и суффиксом ' (номер_архива)' без символов кавычек;
- -N включает игнорирование новых файлов;
- -C включает игнорирование файлов с любым изменением у него статуса;
- -S выключает изменение файла статуса, в том числе и копирование его в StFile.bak.
Так же программа не будет удалять имеющийся от ручного копирования или при
внезапном завершении этой программы StFile.bak;
- -B выключает удаление StFile.bak в конце работы программы.
При вызове дополнительно с опцией -S опция -B не меняет поведение программы;
- -T не запускает программу архивирования tar. При вызове дополнительно
с опцией -a имя файла архива не выводится;
- -a включает формирование имени файла архива (см. описание шаблона выше).
При вызове дополнительно с опцией -T имя файла архива не выводится;
- -v печатает на стандартный вывод список файлов для архивации.
Список может быть выведен программой tar благодаря ее вызову с опцией -v,
либо сформирован данной программой как с завершением каждой строки
с файлом символом новой строки (такое поведение при работе с tar)
так и с нулевым символом при использовании опции -0;
- -0 используется совместно с опцией -v или -n для переключения
режима печати списка файлов с разделителем строк в виде нулевого символа;
- -s StFile задание имени файла для сохранения статуса текущего
сканирования. По умолчанию - 'statefile.lst';
- -l LIST_OF_FILES переключение режима работы со сканирования
каталогов в режим чтения файлов для сканирования из указанного списка.
Данный список может быть подготовлен предыдущим вызовом этой программы.
Если указанное имя есть '-', то чтение производится из стандартного ввода.
Ключ -l предполагает список файлов с разделителем "новая строка";
- -L LIST_OF_FILES - то же что и -l LIST_OF_FILES, но разделитель
должен быть нулевым символом;
- -n выводить список файлов на стандартный вывод из файла для
сохранения статуса предыдущих сканирований. Файл статусов должен уже существовать.
Вызов с другими опциями может либо молча проигнорирован, либо вызвать вывод сообщения
об ошибки несовместимости с опцией -n. Вывод статистики опцией -i будет укорочен:
производится показ загруженных строк из файла статусов и количество проигнорированных
записей, полностью соотвествующих или как подкаталоги указанных опциями -e exclude;
- -e exclude добавить исключение при сканировании. Допускается многократное
использование данной опции. Каталоги-исключения прекращают рекурсию сканирования внутрь,
начиная с указанного исключения. Но, наборот, если указанный каталог равен одному
из каталогов для сканирования, то в этом каталоге выбираются для рекурсивного
сканирования только подкаталоги, а не каталоги пропускаются.
По умолчанию в список исключений добавляются имя статусного файла
и его резервной копии, а также имя текущего архива. Логическое
следствие: для сохранения добавочных архивов необходимо исключать все
предыдущие архивы. При сканировании от корня, рекомендуется добавлять
исключения -e /proc -e /sys -e /dev и тому подобные.
Вывод списка файлов производится после полного сканирования каталогов
в перемешанном, но не случайном порядке.