Мне нужно только скопировать файл с удаленного сервера на локальный ПК, если:
- На локальном ПК нет целевого файла.
- Исходный файл на сервере новее, чем целевой на локальном ПК.
Исходный файл занимает 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