michaellukashov / Far-NetBox

SFTP/SCP/FTP/FTPS/WebDAV/S3 client for Far Manager 3 (http://farmanager.com/)
https://forum.farmanager.com/viewtopic.php?t=6317
GNU General Public License v2.0
157 stars 52 forks source link

Время записи файлов в панели #289

Open maximvelichko opened 5 years ago

maximvelichko commented 5 years ago

Проблема с редактированием файлов в Far3/Netbox (последняя стабильная сборка, 3.0.0.5445 x64), через scp.

Время файлов в панели показывается верное, согласно моей зоне. После редактирования время меняется и вроде как верное, но "ls -l qq.txt" показывает время на час меньше. (Что, естественно, делает невозможным отредактировать файл - запустить make без предварительного touch.

Кусок netbox лога прилагается. Из того, что я вижу, при сохранении редактирования: . 2019-08-09 12:18:29.972 File: 'C:\Users\mavel\AppData\Local\Temp\FARE59E.tmp\qq.txt' [2019-08-09T18:18:29.925Z] [10]

Однако реальное время на Windows машине (где редактирую): 19:18:29Z

mavel-ubuntu.log

VictorVG commented 5 years ago

Так подстройте смещение тайм-зоны сервера относительно вашего часового пояса. Это же элементарно: F4 на имени сессии, Среда - Настройки подключения, Смещение часового пояса сервера . Точность настройки до 1 минуты.

maximvelichko commented 5 years ago

У меня нету до минуты (или я так и не нашел, где :-() Но в процессе нашел Environment => Daylight saving time. Помогло поменять на Preserve remote timestamp (Unix). Спасибо большое!

А возможно сделать то же самое, но на уровне плагина? Куча сессий, и все страдают одной и той же проблемой

VictorVG commented 5 years ago

Так в том и смысл данной настройки что она зависит от разности времён "клиент - сервер" которые находтся в произвольных точках пространства времени. В принципе, можно поменять значение по умолчанию в исходниках, но нужно будет проверять чтобы ещё больше дров не наломать. Посмотрим.

maximvelichko commented 5 years ago

Спасибо! Полностью согласен с "не наломать дров" :-) В идеале (для меня :-)) было бы, если была опция на уровне плагина, где бы я поменял значение по умолчанию только для себя, но которое бы действовало для всех моих сессий. В принципе, для себя я ее разрешил на уровне "неудобно, но жить можно", но буду признателен, если когда-нибудь будет на уровне "удобно, сделал и забыл" :-)

Я, кажется, начал догадываться, что происходит. Не понимаю, зачем, но.... На всех моих машинах установлена одна и та же зона (Pacific Time Zone, -0800 зимой, -0700 летом), везде оно работает корректно. Проблема в том, что на всех *nix/macOS система считает, что date +"%Z %z" => PDT -0700, а на всех Windows - systeminfo | findstr /C:"Time Zone" => Time Zone: (UTC-08:00) Pacific Time (US & Canada). Не вдаваясь в то, кто виноват (вроде, очевидно), проблема, видимо, известна давно (https://answers.microsoft.com/en-us/windows/forum/all/time-zone-offset-problems/563da4cf-8193-436a-8775-59799c86a708), и мной, как пользователем, неразрешима.

Уточню еще раз, зона установлена на всех машинах, как нужно, и время в пределах одной машины (как системное, так и измененных файлов) - точное.

Проблема должна быть для всех пользователей моей зоны, которые из Windows лазят на *nixовые машины. Не знаю, так ли это для других зон, где есть переход на летнее время.

VictorVG commented 5 years ago

Ну, тогда я представляю чьи уши из кустов торчат.:) Опять двоечники времена напутали.:) Ну, тут есть решение которым пользуемся - перевести все локальные ОС на единый стандарт временной шкалы, разумнее всего использовать время в стандарте UTC т.к. тут легче всего считать смещения. А форматы типа Pacific Time Zone не зря называют "локальными" - они привычны людям в какой-то местности, а за её пределами - "А что это за зверь?" и отсюда корни проблемы.

Что до поправки - это в исходниках искать. В принципе возможно специально для вас собрать вариант с таким умолчанием, но коли что вылезет, особенно связанная пакость, поймать ошибку будет намного сложнее т.к. мы потратим силы и время на разделение событий.