Временная метка файла на удаленном SFTP-сервере всегда будет установлена на время, в которое удаленный файл был изменен в последний раз (т. Е. Время загрузки) - как и в случае любого другого файла на сервере Linux.
Как вопрос , который вы связали сами говорит:
после загрузки файлов даты создания и изменения изменяются на время, когда была произведена загрузка.
Полагаю, вы как-то ожидаете, что используется локальная временная метка файла. Это не. Вы не загружаете локальный файл. Вы загружаете данные из потока (Stream
интерфейс). SSH.NET (пусть только SFTP-сервер) даже не знает, что ваш экземпляр Stream
произошел из локального файла. Поэтому SSH.NET (пусть только SFTP-сервер) не может знать временную метку локального файла.
В конце концов, он ведет себя так, будто вы скопировали файл на сервере Linux через канал (аналогично потоку) вместо использования команды cp
, например:
cat source > target
Содержимое копируется, но отметка времени всегда будет временем последней модификации (т.е. временем копирования).
Если вы хотите, чтобы временная метка удаленного файла совпадала с временной меткой исходного локального файла, вы должны закодировать это (как сделано в вопросе, который вы уже знаете):
SSH.NET: можно ли загружать файлы с использованием SFTP и сохранять даты файлов из исходных файлов?
Обратите внимание, что это неправда, что "SSH.NET делает это неправильно" . Он делает то, что должен (мог). Он нигде не обещает вам сохранить временную метку для вас.