Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Обработка больших объемов информации (http://forum.oszone.net/showthread.php?t=85238)

ProcInf 10-06-2007 17:56 597725

Обработка больших объемов информации
 
Здравствуйте...
Возникла такая проблема....
Как обрабатывать большие(по-миоим меркам объемы информации)...
Условия работы:
- поток информации в день ~(30-60)гигов....;кол-во файлов ~(700.000-1.000.000)
- оч. сильно дублирована
- рассредоточена в пределах локалки
- администраторчких прав нет, но хватает и пользовательских(экспериментальный проект)
- основные средства(инструментарий) обработки это (bat-скрипты, хотя можно использовать и решения на ,к примеру, C++)
- обработка происходит в фоновом режиме

Цели:
- Сортировка файлов по заданным критериям...
- Задача упрощается так как анализ фалов не контекстный, а лишь основанный на именах фалйов....
- ...

Уже имеющиеся решения:
- скрипт as.bat сортирует фалы по заранее заданым правилам которые находится в текстовом файле(ext.txt).
Проще говоря сортирует по расширениям, и шаблонам имен файлов...
Исходники ниже...
Проблема в том, что приходится делать для каждого правила новый проход по всем файлам(а их много....)...
Так что хотелось бы узнать как в один проход отсортировать файлы,как пропускать уже отсортированные файлы,как исключать повторяющиеся файлы..
Да и вообще хочется побольше опыта приобрести по данной проблеме.
Заранее спасибо...

========================= СКРИПТ as.bat =========================

rem НАЧАЛО СКРИПТА as.bat
@echo off
cls
echo Start
echo Inicialization of varibles
set fileExtension=ext.txt
set input_folder=autosort_folder
if exist %fileExtension% (
echo Current catalog: & cd
echo You are sure?(y/n)
set /p ask=
if "%ask%"=="y" (
for /F "eol=/ tokens=1,* delims==" %%i in (%fileExtension%) do (
set %%i=%%j
echo Sorting %%i
echo Create output folder...
md %input_folder%\%%i
echo Please waiting...
FOR /r %%f IN (%%j) DO (
move /y "%%f" %input_folder%\%%i
)
)
) else (
echo Operaciya sortirovki otmenena pol`zovatelem
)
) else (
echo Fajl so spiskom rasshirenij ne najden
)
rem КОНЕЦ СКРИПТА as.bat

========================= ФАЙЛ ext.txt =========================

// НАЧАЛО ФАЙЛА ext.txt
// Файл с расширениями для автоматической сортировки файлов
//Временные файлы
tmp_files=*.~*; ~*.*; *.??~; *.---; *.tmp; *._mp; *~tmp.*; *.??$; *.syd; *.shd; *.old; *.bak; *.bac; *.bup; *.chk; t3v?????.*; *.gid; mscreate.dir; chklist.*; 0???????.nch; *.dmp; _istmp*.*; *.obj; *.idb; *.ilk; *.tlb; *.tli; *.tlh; *.tmp; *.ncb; *.rsp; *.pdb; *.pgc; *.pgd; *.pch; BuildLog.htm; *.manifest; *.manifest.res; mt.dep;
//Audio
audio_files=*.aif; *.au; *.cda; *.med; *.mid; *.midi; *.mod; *.mpa; *.mp3; *.ogg; *.ra; *.rmi; *.rmx; *.rv; *.s3m; *.sfx; *.sid; *.snd; *.spc; *.voc; *.vvs; *.wav; *.wma; *.xm;
//Video
video_files=*.asf; *.avi; *.divx; *.mpe*; *.mpg; *.mpg4; *.mov; *.rm; *.vob; *.wmv; *.xvid;
// Mail message files
mail_files=*.eml; *.msg;
// PDF files
pdf_files=*.pdf;
// DJVU files
djvu_files=*.djvu; *.djv;
// URL files
url_files=*.url;
// КОНЕЦ ФАЙЛА ext.txt

Vlad Drakula 11-06-2007 12:31 597933

ProcInf
1) развертываем SQL сервер если нету такой возможности то используем SQLite
2) создаем паук который прозводит индексацию (заносить все имена файлов в базу)
3) создаем скрипт выборки из базы

amel27 11-06-2007 13:10 597949

ProcInf
в продолжение CMD-варианта...
Цитата:

как в один проход отсортировать файлы
- отобрать список всех файлов (DIR /B *.*) во временный текстовый файл;
- на основе общего списка имен и списка шаблонов построить списки имен для каждого типа файлов (используя GREP или штатный FINDSTR);
- отработать в цикле все полученные списки отсортированных файлов.
Цитата:

как пропускать уже отсортированные файлы
отсортированные или скопированные?... если первое, то по наличию в списке, если второе, то по наличию файла в целевом каталоге (IF EXIST)
Цитата:

как исключать повторяющиеся файлы
аналогично предыдущему... если разные файлы могут иметь одинаковое имя, то придется по ходу копирования переименовывать.
Цитата:

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


Время: 17:28.

Время: 17:28.
© OSzone.net 2001-