Arhn - архитектура программирования

Копирование файла, если цель не существует или источник новее

Мне нужно только скопировать файл с удаленного сервера на локальный ПК, если:

  1. Целевого файла на локальном ПК пока нет.
  2. Исходный файл на сервере новее, чем целевой на локальном ПК.

Исходный файл весит 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);
  }
}

Мои вопросы:

  1. Должен ли приведенный выше код передавать 4 МБ данных, чтобы получить измененную временную метку источника?

  2. Достаточно ли сравнения измененных временных меток для того, что я пытаюсь сделать? Или мне также следует сравнивать созданные временные метки?

(#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 
12.11.2010

Ответы:


1
  1. Доступ к размеру и временным меткам не требует, чтобы весь файл загружался по сети.

  2. Я бы включил созданные, измененные и размер. Чтобы быть в полной безопасности, вам нужно вычислить хэш, но для этого требуется доступ к 4 МБ. Только вы можете определить, является ли это приемлемым риском.

И VBScript должен быть таким же.

12.11.2010
  • +1: Хорошо, поэтому я интерпретирую ваш ответ как говорящий, что я могу получить: создано, изменено и размер без потоковой передачи 4 МБ. Однако мне нужно передать 4 МБ, чтобы рассчитать хэш. Спасибо! 12.11.2010
  • Правильный. Это именно то, что я говорил. 12.11.2010

  • 2

    Если вы просто используете файловый ресурс UNC или что-то подобное, нет, он не будет загружать весь файл, чтобы проверить только дату. Что касается № 2: последнего изменения должно быть достаточно, поскольку последнее изменение никогда не должно быть старше даты создания.

    12.11.2010
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..