Конкурс "Системный Администратор 2013", Первые IT-шные олимпийские игры |
Здравствуйте, гость ( Вход | Регистрация )
Конкурс "Системный Администратор 2013", Первые IT-шные олимпийские игры |
27.8.2013, 19:06
Сообщение
#301
|
|
Newbie Группа: Пользователи Сообщений: 20 Регистрация: 27.8.2013 Пользователь №: 1695 |
Ну и неправильно ... в папке stih присутствует папка с числом ... Ну не буду же я палить свой id А по поводу лишних папок, никто не мешает вам удалять одинаковые пустые там же в 7-Zip'e, а не тупо переименовывать, как делал я. А файлик я выложил лишь как пример переименования в UTF-8. Фишка в том, что при переименовании в 7-Zip нет проблем с символом "*", сохраняются все права на файлы, даты модификации, владельцы и, самое главное, правильно считаются контрольные суммы. |
|
|
27.8.2013, 19:31
Сообщение
#302
|
|
Newbie Группа: Пользователи Сообщений: 20 Регистрация: 23.8.2013 Из: Челябинск Пользователь №: 1677 |
Ну не буду же я палить свой id А по поводу лишних папок, никто не мешает вам удалять одинаковые пустые там же в 7-Zip'e, а не тупо переименовывать, как делал я. А файлик я выложил лишь как пример переименования в UTF-8. Фишка в том, что при переименовании в 7-Zip нет проблем с символом "*", сохраняются все права на файлы, даты модификации, владельцы и, самое главное, правильно считаются контрольные суммы. А такой ответ был засчитан? |
|
|
27.8.2013, 19:33
Сообщение
#303
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Есть еще идея ... читаем Преобразование имен файлов при распаковке архива tar и понимаем что у tar есть опция --transform, которая позволяет задать sed-like выражение. Делаем список замены и как-то оборачиваем это в sed выражение ...
-------------------- |
|
|
27.8.2013, 19:36
Сообщение
#304
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Ну не буду же я палить свой id А по поводу лишних папок, никто не мешает вам удалять одинаковые пустые там же в 7-Zip'e, а не тупо переименовывать, как делал я. А файлик я выложил лишь как пример переименования в UTF-8. Фишка в том, что при переименовании в 7-Zip нет проблем с символом "*", сохраняются все права на файлы, даты модификации, владельцы и, самое главное, правильно считаются контрольные суммы. Ну а ответ-то был засчитан? ) -------------------- |
|
|
28.8.2013, 0:32
Сообщение
#305
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
У кого PHP есть? Посмотрите вот этот класс для работы с TAR ...
tar.zip ( 3,74 килобайт ) Кол-во скачиваний: 19 Он нормально считывает структуру и парсит содержимое TAR. Но есть некоторые проблемы при сохранении. Вот если бы считать им TAR, поправить имена, а потом записать обратно или же просто воспользоваться процедурами чтения 512-ти байтных блоков tar архива оттуда, то все бы получилось. Пример использования: Код <?php require 'tar.php'; $tar = new Tar(); $tar->load('dir.tar'); print_r($tar->contents()); $tar->save('dirfix.tar',''); ?> Но, как видно, есть косяки при сохранении (( p.s. Можно не смотреть ... скрипт не поддерживает длинные имена (LongLink) ... так что выход - либо модифицировать (читайте - переписать) его, либо искать аналогичное с поддержкой ././@LongLink -------------------- |
|
|
28.8.2013, 1:34
Сообщение
#306
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Попытка подобраться к проблеме ближе привела меня к статье Работа с архивами tar.gz в php, в ней утверждается tar_gz.php из состава CMS Битрикс содержит класс для работы с архивами, который можно использовать отдельно. Т.е. без привязки к CMS. К сожалению, в последних релизах Битрикса этот класс переделали, так что отдельно использовать его уже нельзя. Но что делают упрямство и Google в руках ищущего ... вот он волшебный tar_gz.php от отдной из старых версий Битрикс:
tar_gz.7z ( 5,02 килобайт ) Кол-во скачиваний: 25 Работа с лонглинками поддерживается Пример архивирования Код require_once('tar_gz.php'); // имя архива $tmpfname = "result/test.tar.gz"; // содержимое этого каталога будем архивировать $folder = "future/mega/arc"; // создаем объект, флаг сжатия установлен $oArchiver = new CArchiver($tmpfname, true); // делаем архив, убираем future/mega/, добавляем new_folder/new $tres = $oArchiver->add('"'.$folder.'"', "new_folder/new", "future/mega/"); // вывод ошибок если есть $arErrors = &$oArchiver->GetErrors(); if(count($arErrors)>0) { $strError = "<br>"; foreach ($arErrors as $value) $strError .= "[".$value[0]."] ".$value[1]."<br>"; } else $strError = ".<br>"; echo $strError; Пример разархивирования Код require_once('tar_gz.php'); // имя архива $tmpfname = "result/test.tar.gz"; // куда распаковывать $folder = "yes/my/arc/extract"; // создаем объект $oArchiver = new CArchiver($tmpfname); // поеееехали! $tres = $oArchiver->extractFiles($folder); // вывод ошибок если есть $arErrors = &$oArchiver->GetErrors(); if(count($arErrors)>0) { $strError = "<br>"; foreach ($arErrors as $value) $strError .= "[".$value[0]."] ".$value[1]."<br>"; } else $strError = ".<br>"; echo $strError; Ну а теперь можно попробовать ковырнуть класс ... последовательно считываем записи, исправляем имена, записываем ... p.s. Смотрите как отлично ... метод: Код print_r($oArchiver->extractContent()); Позволяет получить оглавление архива в виде массива: Код [1] => Array ( [checksum] => 7242 [filename] => /stih/ъБДБЧБСУШ ЧПРТПУПН:/ [mode] => 509 [uid] => 1000 [gid] => 1000 [size] => 0 [mtime] => 1377261707 [typeflag] => 5 ) А что еще нужно настоящему парсеру Теперь остается только написать / использовать часть функций из имеющегося класса для записи. з.ы. С помошбю функции перекодировки, которую я публиковал здесь раньше - отлично получаем список путей вида: Код /stih/ /stih/Задаваясь вопросом:/ /stih/Задаваясь вопросом:/И надеюсь на чудо,/ /stih/Задаваясь вопросом:/Задаваясь вопросом:/ /stih/Задаваясь вопросом:/Задаваясь вопросом:/Задаваясь вопросом:/ /stih/Задаваясь вопросом:/Задаваясь вопросом:/Снова я восседаю/ /stih/Задаваясь вопросом:/Задаваясь вопросом:/Снова я восседаю/И надеюсь на чудо,/ /stih/Задаваясь вопросом:/Задаваясь вопросом:/Снова я восседаю/Снова я восседаю/ 122 строки! Теперь нужно собрать все это обратно в TAR архив, причем без участия файловой системы. Т.е. создать эти папки не получится. Т.е. просто "спарсить" TAR обратно. А это сложнее ... -------------------- |
|
|
28.8.2013, 2:57
Сообщение
#307
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Для примера покажу вам 1 созданный мной tar архив:
decker.7z ( 198 байт ) Кол-во скачиваний: 16 Как вы думаете, сколько в нем папок? Одна? А на самом деле: Код C:\>tar -tvf decker.tar /Tools/tar.EXE: Record size = 4 blocks drwxrwxr-x 1000/1000 0 2013-08-23 16:41 (c) Decker, 2013 drwxrwxr-x 1000/1000 0 2013-08-23 16:41 (c) Decker, 2013 drwxrwxr-x 1000/1000 0 2013-08-23 16:41 (c) Decker, 2013 На самом деле 3 ... причем открою секрет, у всех трех разный timestamp, отличающийся на 1. Чувствуете? -------------------- |
|
|
28.8.2013, 7:11
Сообщение
#308
|
|
Junior Member Группа: Пользователи Сообщений: 41 Регистрация: 25.8.2013 Из: Казахстан/Алматы Пользователь №: 1682 |
Для примера покажу вам 1 созданный мной tar архив: decker.7z ( 198 байт ) Кол-во скачиваний: 16 Как вы думаете, сколько в нем папок? Одна? А на самом деле: Код C:\>tar -tvf decker.tar /Tools/tar.EXE: Record size = 4 blocks drwxrwxr-x 1000/1000 0 2013-08-23 16:41 (c) Decker, 2013 drwxrwxr-x 1000/1000 0 2013-08-23 16:41 (c) Decker, 2013 drwxrwxr-x 1000/1000 0 2013-08-23 16:41 (c) Decker, 2013 На самом деле 3 ... причем открою секрет, у всех трех разный timestamp, отличающийся на 1. Чувствуете? думаю если не по красивому, то можно так, вручную зато... хттп://www.obit.com.ua/atool-udobnaya-rabota-s-arhivami-iz-terminala/ |
|
|
28.8.2013, 7:54
Сообщение
#309
|
|
Junior Member Группа: Пользователи Сообщений: 71 Регистрация: 25.8.2013 Пользователь №: 1681 |
есть идея попробовать arсhivemount
примонтировать архив как файловую систему и сменить кодировку папок, но пока еще не пробовал. |
|
|
28.8.2013, 11:23
Сообщение
#310
|
|
Junior Member Группа: Пользователи Сообщений: 40 Регистрация: 10.8.2012 Пользователь №: 1262 |
У кого есть возможность, попробуйте пожалуйста утилиту enca, у нее есть опция -c, --auto-convert.
|
|
|
28.8.2013, 13:17
Сообщение
#311
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Сегодня к вечеру оглашу информацию, решил ли кто-то из админов вопрос с tar'ом правильно ... почему-то мне думается что у всех ~30 тыс. участников среди админов максимум 5/6 ...
-------------------- |
|
|
28.8.2013, 13:32
Сообщение
#312
|
|
Junior Member Группа: Пользователи Сообщений: 40 Регистрация: 10.8.2012 Пользователь №: 1262 |
Сегодня к вечеру оглашу информацию, решил ли кто-то из админов вопрос с tar'ом правильно ... почему-то мне думается что у всех ~30 тыс. участников среди админов максимум 5/6 ... Это вы парсером решили все профили обработать? Кстати, судя по видеодневнику, на этой неделе должны объявить о фиче, которая значительно дополняет или изменяет механику конкурса... Наверное всем специализацию поменяют |
|
|
28.8.2013, 13:38
Сообщение
#313
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Это вы парсером решили все профили обработать? Кстати, судя по видеодневнику, на этой неделе должны объявить о фиче, которая значительно дополняет или изменяет механику конкурса... Наверное всем специализацию поменяют У меня давно парсер работает ... вижу всю статистику ... единственное статистика по квесту обновляется только для тех участников, которые появляются в логе событий. Т.е. если на главной появилась запись о том что участник начал тест, закончил тест, начал квест, тут же информация по квесту попадает в базу. Сейчас надо ее только актуализировать по всем участникам, т.к. баллы по квесту могли измениться, в то время пока участник не светился в логе. Могу сказать что на данный момент обработано ~2000 записей из всех ... результата 6/6, т.е. 240 баллов среди админов пока нет. -------------------- |
|
|
28.8.2013, 14:04
Сообщение
#314
|
|
Newbie Группа: Пользователи Сообщений: 20 Регистрация: 27.8.2013 Пользователь №: 1695 |
Ну а ответ-то был засчитан? ) Ситуация такая. Были опробованы два tar файла - в одном 122 фолдера, в другом - 82, оба файла валидные (с точки зрения линукса, проверено распаковкой) в итоге получаются папки как в оригинале (если переименовывать руками в линуксе). Даты и владельцы в обоих файлах сохранены. Результат нулевой. Похоже либо у них проверка не корректная, либо мы не правильно понимаем значение фразы "точно такой же". |
|
|
28.8.2013, 15:22
Сообщение
#315
|
|
Junior Member Группа: Пользователи Сообщений: 41 Регистрация: 25.8.2013 Из: Казахстан/Алматы Пользователь №: 1682 |
Ситуация такая. Были опробованы два tar файла - в одном 122 фолдера, в другом - 82, оба файла валидные (с точки зрения линукса, проверено распаковкой) в итоге получаются папки как в оригинале (если переименовывать руками в линуксе). Даты и владельцы в обоих файлах сохранены. Результат нулевой. Похоже либо у них проверка не корректная, либо мы не правильно понимаем значение фразы "точно такой же". а как ее еще понимать правильнее? если бы написали в том же архиве - то это меняет все. Ошущение, что мы наковыряли в дебри, далеко далеко от истины. прислать точно такой же все каталоги переименованы в utf-8 |
|
|
28.8.2013, 15:44
Сообщение
#316
|
|
Junior Member Группа: Пользователи Сообщений: 41 Регистрация: 25.8.2013 Из: Казахстан/Алматы Пользователь №: 1682 |
а как ее еще понимать правильнее? если бы написали в том же архиве - то это меняет все. Ошущение, что мы наковыряли в дебри, далеко далеко от истины. прислать точно такой же все каталоги переименованы в utf-8 Более того, с оф сайта новостной ленты leha • день назад Дарья, скажите, пожалуйста, в пятом задании квеста порядок папок в файле имеет значение? △ ▽ • Ответить • Поделиться › Daria Zvedeninova > leha • день назад − ↓ Не имеет. |
|
|
28.8.2013, 16:01
Сообщение
#317
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
а как ее еще понимать правильнее? если бы написали в том же архиве - то это меняет все. Ошущение, что мы наковыряли в дебри, далеко далеко от истины. прислать точно такой же все каталоги переименованы в utf-8 Ты не понимаешь ... там есть каталоги, которые при переименовании получаются дублируются. Т.е.: Кат1Кодировка1 --> Кат1 (UTF8) Кат1Кодировка2 --> Кат1 (UTF8) В результате в получившемся TAR'е может быть либо две записи Кат1 (UTF8), два блока по 512 байт, либо одна. Какой вариант система считает правильным - вопрос. Пример архива с тремя одинаковыми названиями папок (с тремя блоками) я здесь приводил. -------------------- |
|
|
28.8.2013, 16:22
Сообщение
#318
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Могу огласить предварительные результаты ... в первых 10000 участников, среди админов нет пользователей с результатом 6/6 и 240 баллов ... Как вы думаете, о чем это говорит?
p.s. На главной странице конкурса сейчас активное обсуждение идет ... Цитата А то я уже формат TAR вдоль и поперек знаю ... хотя мне это не нужно вовсе. Я даже знаю как CheckSum header'а каждого блока считается. И написал уже код для генерации tar'а ... Вот тоже вопрос ... что имеется ввиду под такой же tar ... Тупо кодировка поля "Name" в UTF-8 ... или чтобы в Header'е CheckSum еще был соответствующий ... И что делать с доп. атрибутами Ustar (в которых имя и группа пользователя задается) ... учитываются ли они ... Учитывается ли количество блоков в результирующем архиве, должно ли оно быть равно исходному? Учитывается ли количество нулевых блоков футера? В исходном архиве явно перебор с ними, по стандарту достаточно одного .... У меня миллион и 1 вопрос к фразе "точно такой же" ... Это TAR блин ... а еще можно записывать Ocr(CheckSum) как например 0001750, а можно как 1750 ... (к примеру) и то и то является валидным при разархивировании, но что является правильным при оценке правильности задания? Текстовик со списком папок - был бы вариантом ... неоднозначностей бы не было ... Есть предложение аннулировать у всех результат этого вопроса и ввести новый формат ответа: Цитата Предлагаю изменить задание просто на список папок ... т.е. ответом должен быть текстовый файл, где на каждой строке строка пути из tar'а (т.е. имя одного блока), перекодированное в UTF-8 (!) ... Кто за - ставим плюс. В такой трактовке неоднозначностей быть не может. 122 строки на русском и всё. Т.е. ответ вида: Код /stih/ /stih/Задаваясь вопросом:/ /stih/Задаваясь вопросом:/И надеюсь на чудо,/ /stih/Задаваясь вопросом:/Задаваясь вопросом:/ /stih/Задаваясь вопросом:/Задаваясь вопросом:/Задаваясь вопросом:/ /stih/Задаваясь вопросом:/Задаваясь вопросом:/Снова я восседаю/ /stih/Задаваясь вопросом:/Задаваясь вопросом:/Снова я восседаю/И надеюсь на чудо,/ /stih/Задаваясь вопросом:/Задаваясь вопросом:/Снова я восседаю/Снова я восседаю/ Ну и т.д. Что скажет общественность? -------------------- |
|
|
28.8.2013, 17:12
Сообщение
#319
|
|
Junior Member Группа: Пользователи Сообщений: 43 Регистрация: 26.8.2013 Из: Норильск Пользователь №: 1684 |
точно!
аннулировать! и ещё аннулировать про спички! или дать право на исправление неверного ответа (2 попытки ответа для каждого вопроса) -------------------- 1с-ник
|
|
|
28.8.2013, 17:36
Сообщение
#320
|
|
Junior Member Группа: Пользователи Сообщений: 124 Регистрация: 10.8.2012 Пользователь №: 1249 |
свежий промо: itstarz2013-05ideco
что-то не работает... письмо видать прислали, а базу не промо не обновили, или как -------------------- -- Real programmers never sleep. They enter brainsaver mode.
|
|
|
Текстовая версия | Сейчас: 31.1.2025, 15:59 | |