Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.08.18;
Скачать: [xml.tar.bz2];

Вниз

Оценить приблизительное количество файлов папке и ее подпапках   Найти похожие ветки 

 
JzckFromTheShadow ©   (2013-03-19 11:26) [0]

Написал программку синхронизации папки в другое место с помощью API-шных TSearchRec и TSHFileOpStruct, все работает замечательно, один минус... Хотелось бы сделать общий прогресс копирования файлов... но для этого надо знать общее количество файлов и подпапок в синхронизируемой папке...
Сам вижу только в 2 прохода сделать такое: первым проходом по всем элементам посчитать общее количество элементов структуры TSearchRec и в прогресс ставить это число, а вторым проходом уже копировать непосредственно сами файлы и папки... Но как то это очень некрасиво... да и время опять же прилично уйдет только на подсчет папки с кол-вом файлов и подпапок за 2-3 тысячи. Может кто подскажет более красивое решение?


 
Rouse_ ©   (2013-03-19 11:28) [1]


> Но как то это очень некрасиво... да и время опять же прилично
> уйдет только на подсчет папки с кол-вом файлов и подпапок
> за 2-3 тысячи. Может кто подскажет более красивое решение?

Windows так и делает и никто не говорит что это не красиво :)


 
robt   (2013-03-19 11:34) [2]

эмм...
приблизительное количество файлов в папке и ее подпапках обычно равно +\-10% от ее предыдущего состояния


 
clickmaker ©   (2013-03-19 11:50) [3]

а синхронизация - это разве тупое копирование? Все равно же составляются списки файлов, подлежащих синхронизации либо с одной, либо с обеих сторон


 
знайка   (2013-03-19 11:57) [4]


> а синхронизация - это разве тупое копирование?
а разве нет? :)


 
Inovet ©   (2013-03-19 11:58) [5]

> [4] знайка   (19.03.13 11:57)
> а разве нет? :)

xcopy.exe


 
JzckFromTheShadow ©   (2013-03-19 12:30) [6]


> robt   (19.03.13 11:34) [2]
> эмм...
> приблизительное количество файлов в папке и ее подпапках
> обычно равно +\-10% от ее предыдущего состояния


сори, имел в виду когда первый раз копирую и в папке куда копирую еще ничего нет


> clickmaker ©   (19.03.13 11:50) [3]
> а синхронизация - это разве тупое копирование? Все равно
> же составляются списки файлов, подлежащих синхронизации
> либо с одной, либо с обеих сторон


список не составляю, а прямым перебором проверяю время изменения


 
JzckFromTheShadow ©   (2013-03-19 12:31) [7]


> Rouse_ ©   (19.03.13 11:28) [1]
>
> Windows так и делает и никто не говорит что это не красиво
> :)


спасибо :)


 
O'ShinW ©   (2013-03-19 12:33) [8]


> а разве нет? :)

а не "из двух источников остаются более новые файлы"?


 
clickmaker ©   (2013-03-19 12:50) [9]

> прямым перебором проверяю время изменения

тогда тебе придется проверять время дважды: 1-й в процессе подсчета кол-ва, 2-й уже в ходе копирования. Лучше составить список и уже тупо копировать его


 
JzckFromTheShadow ©   (2013-03-19 12:58) [10]

некоторые файлы в папке, из которой копирую заменяются раз в 5 сек, поэтому пока список составлю другие изменятся)


 
clickmaker ©   (2013-03-19 13:04) [11]

> заменяются раз в 5 сек, поэтому пока список составлю другие
> изменятся

тогда фиксированный прогресс вообще смысла не имеет. Начинай копирование, не дожидаясь окончания подсчета, в процессе корректируй прогресс


 
O'ShinW ©   (2013-03-19 13:12) [12]

тогда (отслеженные, например, по ReadDirectoryChanges) измененные файлы пусть опять встают в конец списка


 
Дмитрий С ©   (2013-03-19 13:16) [13]

Или использовать теневое копирование.


 
Inovet ©   (2013-03-19 13:17) [14]

> [10] JzckFromTheShadow ©   (19.03.13 12:58)
> некоторые файлы в папке, из которой копирую заменяются раз
> в 5 сек, поэтому пока список составлю другие изменятся)

Так, может, подождать минуту-другую, да и не копировать ничего.


 
JzckFromTheShadow ©   (2013-03-19 13:32) [15]

почитал вот эти статьи: http://www.webdelphi.ru/2011/08/monitoring-izmenenij-v-direktoriyax-i-fajlax-sredstvami-delphi-chast-1/ и http://www.webdelphi.ru/2011/08/monitoring-izmenenij-v-direktoriyax-i-fajlax-sredstvami-delphi-chast-2/.
Тоже интересный подход к синхронизации...


 
DVM ©   (2013-03-19 13:56) [16]


> clickmaker ©   (19.03.13 12:50) [9]
> > прямым перебором проверяю время изменения
>
> тогда тебе придется проверять время дважды: 1-й в процессе
> подсчета кол-ва, 2-й уже в ходе копирования. Лучше составить
> список и уже тупо копировать его

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


 
clickmaker ©   (2013-03-19 13:58) [17]

> файл из списка кто-то или что-то может удалить во время
> копирования

ну если удален, то не копируем. делов-то


 
robt   (2013-03-19 14:14) [18]


> JzckFromTheShadow ©   (19.03.13 12:30) [6]

утя в любом раскладе копироваться будет в 1500раз медленней чем сбор статистики


 
JzckFromTheShadow ©   (2013-03-19 15:05) [19]

спасибо откликнувшимся, не стоит больше спорить)


 
Лукошко   (2013-03-19 15:20) [20]

10 с лишним тысяч файлов, раскиданных по порядка 150 папкам с различными уровнями вложенности, на Core2Duo E7300 пробегаются за 3 секунды. И это - с выводом имён файлов и поиском по маске.
Если просто считать кол-во - будет ещё быстрее.


 
Inovet ©   (2013-03-19 15:50) [21]

> [20] Лукошко   (19.03.13 15:20)
> 10 с лишним тысяч файлов, раскиданных по порядка 150 папкам
> с различными уровнями вложенности, на Core2Duo E7300 пробегаются
> за 3 секунды.

700000 файлов, 80000 папок - 1,5 минуты. Оно же из кэша 0,5 минуты. Среди этого ещё часть  - жёсткие ссылки.


 
Дмитрий С ©   (2013-03-19 17:05) [22]

163000 файлов, 23487 папок, секунд 5


 
clickmaker ©   (2013-03-19 20:49) [23]

Удалено модератором


 
Лукошко   (2013-03-20 11:32) [24]


> Inovet ©   (19.03.13 15:50) [21]

Долго как у вас пробегает! Может, винт очень медленный?
В [20] испытания проводились на Seagate 2 Tb 7200 об/мин. Жёстких ссылок нет.


 
Inovet ©   (2013-03-20 12:00) [25]

> [24] Лукошко   (20.03.13 11:32)
> Может, винт очень медленный?

Да нормальный, но не из новых.
ST3320620AS

Вот поновее, по скорости почти такой же, но на нём файлов раз в 10 меньше
ST32000542AS

90000 файлов 4500 папок - 35 сек, из кэша 3 сек. Примерно как и на первом (системном) результаты.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2013.08.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.003 c
15-1363336410
@!!ex
2013-03-15 12:33
2013.08.18
Ищу программиста, для разовой работы


15-1363737352
brother
2013-03-20 03:55
2013.08.18
Мерцание полос


3-1292346820
megavoid
2010-12-14 20:13
2013.08.18
[D2010] Магия мыши в TSQLQuery + DateTimePicker


2-1354869423
Natashka90
2012-12-07 12:37
2013.08.18
Диалог выбора папки через TTreeView и сетевое окружение с шарами


2-1355252635
Pcrepair
2012-12-11 23:03
2013.08.18
Загрузка страниц в Потоке с idHTTP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский