Eri*_*rik 2 c# ssh sftp file-upload ssh.net
当前,我正在使用Renci SSH.NET库使用SFTP将文件上传到Unix服务器。我不喜欢的一件事是,在上传文件之后,创建日期和修改日期被更改为上传发生的时间。
我想保留源文件中的原始文件日期,可以吗?
SSH.NET库不会自动为您完成此操作。您必须对其进行编码。
有SftpClient.SetLastWriteTime和SftpClient.SetLastWriteTimeUtc方法。但是它们实际上尚未实现。
您可以这样编码:
SftpFileAttributes fileAttributes = client.GetAttributes(targetFile);
fileAttributes.LastWriteTime = File.GetLastWriteTime(sourceFile);
client.SetAttributes(targetFile, fileAttributes);
Run Code Online (Sandbox Code Playgroud)
尽管由于中没有UTC API,但SftpFileAttributes如果客户端和服务器不在同一时区,则可能无法正确设置时间戳。
有关更多详细信息,请参见我的回答:
使用SSH.NET将文件从Windows移动到UNIX服务器时,修改的日期时间会更改
或使用另一个能够自动保留时间戳的SFTP库,最好是具有UTC支持。
例如,WinSCP .NET程序集会自动执行它。只需使用Session.PutFiles方法:
session.PutFiles(sourceFile, targetFile).Check();
Run Code Online (Sandbox Code Playgroud)
(我是WinSCP的作者)