понедельник, 6 июня 2016 г.

Как вручную синхронизировать время компьютера

  Все известные мне операционные системы содержат службу времени и имеют возможность его автоматической синхронизации с внешним источником. В большинстве случаев это прекрасно работает. Но иногда возникает потребность синхронизировать его вручную.
  Для синхронизации времени в семействе Windows есть три способа. Кнопка в панели управления и команда "w32tm.exe" используют протокол NTP. Третий способ - команда "net time".

Протокол NTP

  Есть специальный протокол NTP для синхронизации времени по сети. NTP-клиент периодически запрашивает время у NTP-сервера. Любая версия Windows имеет встроенный NTP клиент. В семействе Windows - сервер NTP может находится только на серверной версии системы.
  Клиент NTP настраивается:
  • для Windows XP в "Панель управления" \ "Дата и время"
  • для Win 7 в "Панель управления", в правом верхнем углу окна в строке поиска набрать слово "время" и выбрать первый предложенный вариант. Или там же переключить режим просмотра из "Категории" в "Крупные значки" или "Мелкие значки".
  Там можно указать нужную дату и время, часовой пояс и NTP-сервера с которыми надо синхронизироваться. В этом же окошке на вкладке "Время интернета" есть кнопка "Обновить сейчас" нажав которую можно запустить синхронизацию.
  По умолчанию Windows синхронизируется с time.windows.com и time.nist.gov. Делает это раз в неделю. Кажется у NTP есть ограничение - если время на клиенте и сервере сильно отличается, то синхро не происходит. NTP использует порт 123 протокола UDP.
  NTP сервер и клиент могут находится друг от друга на любом расстоянии. Запустить синхронизацию можно или вышеприведенном кнопкой "Обновить сейчас" или в командной строке "w32tm /resync"

Команда "net time"

  Если компьютеры расположены в одной локальной сети, то можно применить команду "net time". Насколько мне известно, для этого способа надо, чтобы комп мог раздавать свои папки в локальную сеть. Это точно работает между любыми двумя компьютерами на Windows и теоретически должно работать если в качестве сервера стоит Linux с установленным пакетом Samba.
  Формат команды:
"net time \\ComputerName /set /yes"
  Где ComputerName это имя удаленного компьютера с которого берется время или его IP адрес. Используемый порт TCP/UDP мне неизвестен.