Распаковщик архивов под debian

450 руб.за час • электронные деньги
6 откликов • 1 просмотр
Требуется скрипт (демон?) для распаковки zip, rar, 7z, tar архивов на сервере. Сервер на debian 6. Язык программирования на ваш выбор. Подробно Есть сайт с деревом файлов (типа проводника windows). Структура дерева хранится в mysql, файлы на диске. Требуется постоянно мониторить БД и, при появлении в дереве zip, rar, 7z, tar архива, распаковывать его. Распакованными файлами замещать сам архив в дереве, архив удалять Алгоритм такой: 1) Ищем архивы в БД и берем первый попавшийся 2) Распаковываем 3) Создаем в БД папку с именем архива в том же каталоге, где был архив. 4) Создаем в этой папке структуру файлов из архива 5) Удаляем архив с диска и БД 6) Переходим к пункту 1 Таким образом, должны быть распакованы все архивы, включая вложенные. Если архивов больше нет, скрипт должен просто ждать появления новых.
Нужно учесть: • Если архив не удалось распаковать (поврежден или не хватает частей многотомного архива), то он должен быть удален + сообщение об этом должно быть добавлено в специальную таблицу в БД. • В архивах может быть несколько файлов с одинаковым именем в одной папке. При распаковке нужно добавлять к имени дублей “ 1”, “ 2”, “ 3” и т.д. • В папке, где находился архив до распаковки, может уже быть папка с именем архива. Соответственно к создаваемой папке нужно добавить “ 1”, “ 2”, “ 3” и т.д. • При распаковке удалять файлы Thumbs.db (это кеш предпросмотра виндового проводника) • При распаковке удалять файлы, которые начинаются с символов ~$ (это временные файлы MS Office) Например “~$анц кухня.doc” • Нужно учитывать, что пользователи непрерывно продолжают работать с деревом на сайте и архив в любой момент может быть перемещен или удален. Соответственно замена архива в БД на распакованную папку должна производиться в последний момент. Если архив был перемещен во время распаковки, то поместить распакованные файлы нужно в новое местоположение. Если архив был удален, то нужно удалить распакованные файлы. • Нужно обойти такой хак. В архиве может быть файл на несколько терабайт забитый нулями. Сам архив при этом будет довольно маленьким и подвоха не заметить. Но при распаковке место на сервере кончится и сервер ляжет.