Вопрос или проблема
Когда я использую 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 Сортировать список по времени последнего изменения.
Если вы используете 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
, существуют альтернативные способы получения полной информации о времени изменения файла. Рассмотрим два основных подхода:
-
Использование 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
выводит дату и время с точностью до секунд. -
Использование 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.