Csharp/C#教程:使用SSH.NET将文件从Windows移动到UNIX服务器时,修改日期时间会更改分享


使用SSH.NET将文件从Windows移动到UNIX服务器时,修改日期时间会更改

我在我的C#应用​​程序中使用SSH.NET将文件从Windows复制到UNIX服务器,我有几个场景:

  1. 在UNIX服务器目录中, 如果要复制的文件不存在 ,则将文件复制到UNIX服务器时修改的日期时间更改为复制的日期时间 ? 这是正确的,因为修改后的日期时间不应该改变吗?

  2. 在UNIX Server目录中, 如果要复制的文件已存在 ,则在复制在UNIX服务器路径中替换的同一文件时,文件的修改日期时间不会更改

我对这个修改过的日期时间感到困惑,因为我在这篇文章中读过SSH.NET错误地做了,这应该是正确的吗?

对于那些要求提供代码的人,这里有:

private static int UploadFileToSFTP (string localFileFullPath, string uploadPath) { try { Log.Debug("Inside Utilities.UploadFileToSFTP() with localFileFullPath=" + localFileFullPath + ", and remoteUploadPath=" + uploadPath); Log.Debug("Uploading File : " + uploadPath); using (FileStream fs = new FileStream(localFileFullPath, FileMode.Open)) { Log.Debug("Checking if path: " + Path.GetDirectoryName(uploadPath).Replace("\", "/") + " already exists"); if (!IsDirectoryExists(Path.GetDirectoryName(uploadPath).Replace("\", "/"))) { Log.Debug(Path.GetDirectoryName(uploadPath).Replace("\", "/") + " | Directory does not exist, creating!"); sftpClient.CreateDirectory(Path.GetDirectoryName(uploadPath).Replace("\", "/")); } else { Log.Debug(Path.GetDirectoryName(uploadPath).Replace("\", "/") + " | Directory already exists!"); } Log.Debug("Checking if file: " + uploadPath + " already exists"); if (sftpClient.Exists(uploadPath)) { Log.Debug(uploadPath + " | File Already exists in the Server"); } else { Log.Debug(uploadPath + " | File Does not exist in the Server!"); } sftpClient.BufferSize = 1024; sftpClient.UploadFile(fs, uploadPath); fs.Close(); } return 1; } catch (Exception exception) { Log.Error("Error in Utilities.UploadFileToSFTP(): ", exception); return 0; } } 

远程SFTP服务器上文件的时间戳将始终设置为上次修改远程文件的时间(即上载时间) – 与Linux服务器上的任何其他文件一样。

你自己联系的问题是:

上传文件后,创建和修改日期将更改为上载发生的时间。


我假设您以某种方式期望涉及本地文件时间戳。 不是。 您没有上传本地文件。 您正在从流上传数据( Stream界面)。 SSH.NET(只允许SFTP服务器)甚至不知道你的Stream实例来自本地文件。 所以SSH.NET(只让SFTP服务器)无法知道本地文件的时间戳。

最后,它的行为就像你通过管道(类似于流)而不是使用cp命令在Linux服务器上复制文件一样,如:

 cat source > target 

内容被复制,但时间戳将始终是最后一次修改的时间(即复制时间)。


如果您希望远程文件时间戳与源本地文件的时间戳匹配,则必须对其进行编码(就像您已经知道的问题中所做的那样):
SSH.NET:是否可以使用SFTP上传文件并保留源文件中的文件日期?

请注意, “SSH.NET错误地执行”并不正确。 它做它应该(可能)的事情。 它无处可以保证为您保留时间戳。

上述就是C#学习教程:使用SSH.NET将文件从Windows移动到UNIX服务器时,修改日期时间会更改分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1019547.html

(0)
上一篇 2022年1月4日
下一篇 2022年1月4日

精彩推荐