Мне нужно только скопировать файл с удаленного сервера на локальный ПК, если:
- Целевого файла на локальном ПК пока нет.
- Исходный файл на сервере новее, чем целевой на локальном ПК.
Исходный файл весит 4 МБ, поэтому я не хочу каждый раз копировать.
// File copy if target doesn't exist or source is newer:
if (File.Exists(filenameSource))
{
if (File.Exists(filenameTarget))
{
DateTime dateSource = File.GetLastWriteTimeUtc(filenameSource);
DateTime dateTarget = File.GetLastWriteTimeUtc(filenameTarget);
if (dateTarget < dateSource)
{
File.Copy(filenameSource, filenameTarget, true);
}
}
else
{
File.Copy(filenameSource, filenameTarget);
}
}
Мои вопросы:
Должен ли приведенный выше код передавать 4 МБ данных, чтобы получить измененную временную метку источника?
Достаточно ли сравнения измененных временных меток для того, что я пытаюсь сделать? Или мне также следует сравнивать созданные временные метки?
(#2. Вопрос может показаться глупым, но что, если я удалю новый исходный файл с измененной временной меткой, которая старше измененной временной метки целевого объекта?)
Бонус:
Что, если я напишу приведенный выше код на VBScript? Должен ли приведенный ниже код передавать 4 МБ данных для создания объекта fileSource
?
if filesys.FileExists(strSource) then
if filesys.FileExists(strTarget) then
set fileSource = filesys.GetFile(strSource)
set fileTarget = filesys.GetFile(strTarget)
dateSource = fileSource.DateLastModified
dateTarget = fileTarget.DateLastModified
if dateTarget < dateSource then
filesys.CopyFile strSource, strTarget, true
end if
else
filesys.CopyFile strSource, strTarget, false
end if
end if