WinSCP:使用GetFiles()遇到Junction Directory

时间:2014-05-14 03:15:16

标签: c++-cli winscp junction winscp-net

[问题] WinSCP可以处理Junction目录吗?

我使用C ++ / CLI使用WinSCP .NET程序集(版本5.5.3)编写SFTP程序。我的程序读入计划文件。最初,get文件的源路径必须是绝对路径。现在我必须支持相对路径,我遇到了一个问题。

以下是尝试获取主目录中的所有文本文件。当然,我想在主目录中的所有子目录中获取所有文本文件。所以我用:

transferOptionObject->FileMask = "*.txt";
transferResult = sftpSession->GetFiles(".", "C:\\temp\\receive", false, 
                 transferOptionObject);

假设我们使用此帐户 terry 登录远程计算机,远程主目录为/C/Users/terry/Documents。从session->DebugLog文件中,我发现WinSCP尝试遍历主目录中的所有文件和目录。

列表是:

* a.txt
* firstDirectory
* My Music
* My Photos
* My Videso
* OtherDirectory
* Other.txt

WinSCP遍历列表中的每个项目。处理firstDirectory后,它会尝试处理My Music。但是由于权限被拒绝,它返回错误,因为无法处理。

然后我去服务器,做一个dir。我发现那3个'我的'目录是[Junction]:

29-Apr-14  09:44    <DIR>          .
29-Apr-14  09:44    <DIR>          ..
16-Jan-14  09:48    <DIR>          Documents
16-Jan-14  09:45    <JUNCTION>     My Music [C:\Users\terry\Music]
16-Jan-14  09:45    <JUNCTION>     My Pictures [C:\Users\terry\Pictures]
16-Jan-14  09:45    <JUNCTION>     My Videos [C:\Users\terry\Videos]

我回过头来看看这些: Topic "Sync is broken" ;; Tracker Bug 1132 ;; Topic: "WinSCP doesn't check hardlink target date when synchronizing"

它们有关系吗?

1 个答案:

答案 0 :(得分:0)

由于它是一个远程联结/文件夹,并且SFTP协议对结点一无所知,所以它与您的SFTP服务器有关。这与客户端(WinSCP)无关,因为它甚至不知道它是一个交叉点。您的SFTP服务器很可能只是将联结显示为文件夹。虽然它也可以将它作为符号链接呈现给文件夹(但在这种情况下,WinSCP会默默地跳过它)。


附注:远程目标目录的路径应以斜杠结尾 请参阅https://winscp.net/eng/docs/library_session_getfiles