Сохранение измененной временной метки файла при загрузке в SFTP - PullRequest
1 голос
/ 28 февраля 2020

Мне нужно сохранить измененную временную метку моего файла при загрузке его на сайт SFTP.

Я использую com.enterprisedt. net .ftp.s sh .SSHFTPclient для передачи.

Пожалуйста, дайте мне знать, если есть какой-либо способ.

Ответы [ 2 ]

1 голос
/ 28 февраля 2020

Позвоните SSHFTPClient.setModTime после загрузки.

sshFtpClient.setModTime(remotePath, new Date(new File(localPath).lastModified());
0 голосов
/ 28 февраля 2020

Дайте мне знать, если есть какой-либо способ.

Нет способа сохранить метки времени при передаче файла. Протокол SFTP не допускает этого.

Документы спецификации протокола проводного SFTP никогда не были заполнены и ратифицированы, но самый черновой вариант (для версии 6 протокола) - draft-ietf-se c sh -filexfer-13 .

Если вы посмотрите на разделы 8.1 и 8.2, вы увидите, что клиент запрашивает открытие файла (SSH_FXP_OPEN) и запись файла (SSH_FXP_WRITE ) не передавать информацию о метках времени от клиента на сервер. Поскольку запрос не передает отметки времени, они не могут быть сохранены при передаче.

Если вы хотите «сохранить» отметку времени, в документе протокола говорится, что клиент должен отправить SSH_FXP_SETSTAT или * 1016. * запрос на обновление соответствующих атрибутов файла.

Ответ Мартина содержит код для этого с использованием библиотеки SSHFTPClient.

Я не проверял, но уверен что это относится и к более ранним версиям протокола SFTP.

...