Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Требуется скрипт для распаковки zip, rar, 7z, tar архивов на сервере. Сервер на debian 6. Язык программирования на ваш выбор.

Есть сайт с деревом файлов (типа проводника windows). Структура дерева хранится в mysql, файлы на диске. Требуется постоянно мониторить БД и, при появлении в дереве zip, rar, 7z, tar архива, распаковывать его. Распакованными файлами замещать сам архив в дереве, архив удалять Алгоритм такой:

1) Ищем архивы в БД и берем первый попавшийся

2) Распаковываем

3) Создаем в БД папку с именем архива в том же каталоге, где был архив.

4) Создаем в этой папке структуру файлов из архива

5) Удаляем архив с диска и БД

6) Переходим к пункту 1

Таким образом, должны быть распакованы все архивы, включая вложенные. Если архивов больше нет, скрипт должен просто ждать появления новых.

Нужно учесть:

• Если архив не удалось распаковать (поврежден или не хватает частей многотомного архива), то он должен быть удален + сообщение об этом должно быть добавлено в специальную таблицу в БД.

• Если в архиве есть файлы больше 50Мб, они должны быть удалены + сообщение об этом должно быть добавлено в специальную таблицу в БД. Должна быть возможность изменить предельный размер файлов (50Мб) в настройках скрипта.

• В архивах может быть несколько файлов с одинаковым именем в одной папке. При распаковке нужно добавлять к имени дублей “ 1”, “ 2”, “ 3” и т.д.

• В папке, где находился архив до распаковки, может уже быть папка с именем архива. Соответственно к создаваемой папке нужно добавить “ 1”, “ 2”, “ 3” и т.д.

• При распаковке удалять файлы Thumbs.db (это кеш предпросмотра виндового проводника)

• При распаковке удалять файлы, которые начинаются с символов ~$ (это временные файлы MS Office) Например “~$анц кухня.doc”

• Нужно учитывать, что пользователи непрерывно продолжают работать с деревом на сайте и архив в любой момент может быть перемещен или удален. Соответственно замена архива в БД на распакованную папку должна производиться в последний момент. Если архив был перемещен во время распаковки, то поместить распакованные файлы нужно в новое местоположение. Если архив был удален, то нужно удалить распакованные файлы.

• Нужно обойти такой хак. В архиве может быть файл на несколько терабайт забитый нулями. Сам архив при этом будет довольно маленьким и подвоха не заметить. Но при распаковке место на сервере кончится и сервер ляжет.

12 лет назад
mihse
39 лет
17 лет в сервисе
Был
25 дней назад

Выбранный исполнитель

izimodo
Артем 
36 лет
15 лет в сервисе
Был
2 года назад
12 лет назад
$160
5 дней
Артем супер спец по python. Сделал все быстро и качественно.
Михаил - идеальный заказчик. Четко ставит задание, корректен в общении, дает возможность поработать, не "напрягая" расспросами раньше срока. Моментальная оплата, даже больше изначально оговоренной. Надеюсь на дальнейшее сотрудничество.

Заявки фрилансеров

izimodo
Артем 
36 лет
15 лет в сервисе
Был
2 года назад
12 лет назад