Как отобразить секунды последней даты изменения при использовании команды sftp?

Вопрос или проблема

Когда я использую WinSCP для доступа к своему SFTP-серверу, он показывает дату последнего изменения (изменения) включая секунды. Если я использую sftp на Linux и запускаю ls -l, он показывает только часы и минуты, но без секунд. Как мне также показать секунды, используя sftp, как это делает WinSCP?

Я уже проверил страницу man для sftp и параметры ls, но не нашел подходящего варианта.

Кажется, клиент sftp этого не делает.

Поэтому я боюсь, что единственный вариант – либо использовать обычный ssh server_name ls -l /path/to/file для чтения этих свойств, либо использовать (возможно, элегантную?) возможность Linux иметь файловые системы в пространстве пользователя и использовать sshfs server:/path/to localdirectory/ && ls -l --time-style=long-iso localdirectory.

Согласно странице man sftp, невозможно отобразить полное время файла.

# man sftp

ls [-1afhlnrSt] [path]
               Отображает удаленный список каталогов либо для заданного пути, либо
               текущего каталога, если путь не указан. Путь может содержать
               символы glob(7) и может соответствовать нескольким файлам.

               Признаются следующие флаги и изменяют
               поведение ls соответственно:

               -1      Выводить одномерный вывод.

               -a      Список файлов, начинающих с точки (‘.’).

               -f      Не сортировать список. По умолчанию порядок сортировки
                       лексикографический.

               -h      При использовании с опцией длинного формата использовать 
                       единичные суффиксы: Байт, Килобайт, Мегабайт, Гигабайт,
                       Терабайт, Петабайт и Эксабайт, чтобы
                       уменьшить количество цифр до четырех или меньше
                       используя степени 2 для размеров (K=1024, M=1048576,
                       и т. д.).

               -l      Отображать дополнительные детали, включая разрешения
                       и информацию о владельце.

               -n      Создать длинный список с пользовательской и групповой
                       информацией, представленной в числовом виде.

               -r      Обратить порядок сортировки списка.

               -S      Сортировать список по размеру файла.

               -t      Сортировать список по времени последнего изменения.

https://man.openbsd.org/sftp#ls

Если вы используете GNU ls, вы можете использовать опцию –time-style для свободного изменения формата времени. Пример:

ls -l --time-style=+%Y-%m-%d-%H-%M-%S

Поскольку это как-то долго, вы можете создать псевдоним для удобного использования в ~/.bashrc.

Ответ или решение

Использование SFTP (SSH File Transfer Protocol) может представлять определенные ограничения относительно отображения метаданных файлов, таких как время последнего изменения. Данная проблема затрагивает пользователей, которые привыкли к более информативному интерфейсу, представленному такими клиентами, как WinSCP, где отображаются секунды вместе с датой изменения файла. Давайте рассмотрим, как можно вывести полное время изменения файла, включая секунды, при использовании SFTP на Linux.

Ограничения SFTP

По умолчанию команда sftp не предоставляет полной информации о времени модификации, что подтверждается содержанием её справочной страницы (man page). При использовании команды sftp и её команды ls -l вы увидите только часы и минуты, и не сможете отобразить секунды. Это связано с тем, что конкретная реализация sftp не поддерживает дополнительные опции для вывода секунд.

Альтернативные методы для отображения секунд

Несмотря на ограничения sftp, существуют альтернативные способы получения полной информации о времени изменения файла. Рассмотрим два основных подхода:

  1. Использование SSH для получения информации о файлах:
    Вы можете использовать команду SSH для выполнения команды ls -l на удалённом сервере. Для этого выполните следующую команду:

    ssh username@server_name "ls -l --time-style=long-iso /path/to/file"

    Здесь username – ваше имя пользователя на сервере, server_name – адрес вашего SFTP-сервера, а /path/to/file — путь к интересующему вас файлу. Параметр --time-style=long-iso выводит дату и время с точностью до секунд.

  2. Использование SSHFS (SSH File System):
    Если вы хотите иметь более удобный доступ к файловой системе сервера, можно использовать sshfs для монтирования удалённой файловой системы. После установки sshfs выполните команду:

    sshfs username@server_name:/path/to mount_point

    Затем, когда файловая система будет смонтирована, вы сможете просмотреть файлы и их метаданные с использованием ls с нужными параметрами:

    ls -l --time-style=long-iso mount_point

Заключение

Хотя клиент sftp не поддерживает отображение времени изменения файлов с точностью до секунд по умолчанию, вы можете обращаться к удалённому серверу по SSH или использовать sshfs как элегантное и эффективное решение. Эти методы позволят вам получить желаемую информацию, не прибегая к сторонним программам, сохраняя при этом надежность и безопасность соединений, обеспечиваемую SSH. Надеюсь, данный обзор будет полезен для вас в работе с файловыми системами через SFTP и SSH.

Оцените материал
Добавить комментарий

Капча загружается...