Смотрю по сторонам, размышляю, думаю про алтернативы. Мне для архивов не нужны ленты, кому они нужны пусть используют tar, он уже есть. Вот тут. Человек размышляет на эту тему, приводит обоснованные аргументы. В конце сдается, лапы к верху.
Пробовал cpio на fedora 20, там с синтакисом проще, но файлы больше 4G нельзя. Так и хочеться спросить разработчиков «Господи, почему?».
Не знаю, насколько это сложно, можно сделать архивирование в два потока (два файла), в один пишутся данные файлов уже «обработанные», например, компрессорами, криптовальщиками. В другой, метаданные этих файлов (имя, размер, время, права доступа, адрес начала/конца в потоке данных, метод сжатия..). Потом оба файла объединяются в один.
Такое, я думаю, даже скриптами можно написать.
На выходе:
- можно моментально получить список файлов, не так долго, как это, например, в 20 гиговом архиве домашней папки *.tar.gz;
- так же быстро можно извлечь файл из такого архива;
- при необходимости добавить к архиву можно дописывать данные в конец;
- при необходимости удалить файл, что наврядли бывает часто необходимо именно для архивов, например, по ошибке попал кеш. Можно пересобрать файл данных без удаленных.
Естественно, при всех изменениях в архиве, обновлять метаданные.
Перемещено beastie из development