Сохранить временную метку с помощью Paramiko
Есть ли способ сохранить метку времени при использовании Paramiko для SFTP-файлов с одного сервера на другой, аналогично -p
аргумент в линуксе?
Исходный файл:
jim@vm3634:~$ ls -la
-rwxrwx--- 1 jim admin 2214 Mar 30 17:33 compcip.asc
Загруженный файл:
sftp> ls -la
-rwxrwx--- 1 no-user no-group 2214 Mar 30 18:49 compcip.asc
Загруженный файл должен иметь ту же метку времени, что и оригинал.
1 ответ
Решение
Парамико не поддерживает это.
Вы должны явно назвать SFTPClient.utime
после загрузки.
Обратите внимание, что pysftp (который внутренне использует Paramiko) поддерживает сохранение метки времени с помощью pysftp.Connection.put()
метод.
Вы можете повторно использовать их реализацию (код, упрощенный мной):
local_stat = os.stat(localpath)
times = (local_stat.st_atime, local_stat.st_mtime)
sftp.put(localpath, remotepath)
sftp.utime(remotepath, times)
Аналогично для загрузок.