Форум: "Прочее";
Текущий архив: 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