В настоящее время я использую следующую команду для копирования подмножества лог-файлов сотрудника в другое место для моих собственных записей и дальнейшего анализа.
find . -name '*somestring*' -type f -exec cp -v --update -i {} '//anetworkdrive/logfiles/' \;
Со временем, по мере того, как число файлов в каждой папке увеличивается, это становится медленнее (очевидно), но, похоже, замедляется больше, чем я ожидал.
Если я бегу time find . -name '*somestring*' -type f
в папках источника и назначения, он находит <1000 файлов в каждом месте, и это занимает около 0,2 с (реальное).
В сценарии, где ничего не изменилось ни с одного конца с момента последнего запуска, я бы подумал, что приведенная выше команда копирования не займет намного больше времени, чем одна только находка. find
возвращает список файлов за <1 с, и я подумал, что cp --update
тогда очень быстро проверит дату изменения обоих файлов (src, dest) и пропустит, если они совпадают.
Тем не менее, моя команда полного копирования теперь занимает почти целую минуту, задаваясь вопросом, делает ли она более подробное сравнение, чем просто дата модификации, например, полный diff или что-то еще.
Может кто-нибудь объяснить мне, почему приведенная выше команда занимает так много времени, даже когда ничего не изменилось?
И есть ли более быстрый способ сделать это? Будет ли быстрее передать результаты поиска в cp?
Благодарю.