You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WinSCP .NET组件中实现远程回收站功能

实现WinSCP .NET组件同步时将被覆盖远程文件存入远程回收站

要实现同步过程中把被覆盖的远程文件移动到指定远程回收站,核心是通过WinSCP .NET组件的TransferOptions配置文件掩码的recycle参数,同时提前确保回收站目录存在。以下是具体实现步骤和代码示例:

步骤说明

  1. 预创建远程回收站目录:WinSCP不会自动生成回收站目录,需提前检查并创建,避免后续文件移动操作失败。
  2. 配置传输选项:在TransferOptions.FileMask中添加recycle=远程回收站路径规则,指定被覆盖/删除文件的目标存储位置。
  3. 执行同步操作:调用Session.SynchronizeDirectories时传入配置好的传输选项,触发同步与回收站逻辑。

代码示例(C#)

using WinSCP;

class RemoteSyncWithRecycle
{
    static void Main()
    {
        // 配置远程服务器连接参数
        SessionOptions sessionOptions = new SessionOptions
        {
            Protocol = Protocol.Sftp, // 根据实际协议选择Sftp/Ftp等
            HostName = "your-server-host",
            UserName = "your-username",
            Password = "your-password",
            SshHostKeyFingerprint = "your-ssh-key-fingerprint" // SFTP协议必填
        };

        using (Session session = new Session())
        {
            // 建立远程连接
            session.Open(sessionOptions);

            // 定义远程回收站路径
            string remoteTrashDir = "/tmp/trash";

            // 检查并创建回收站目录
            if (!session.FileExists(remoteTrashDir))
            {
                session.CreateDirectory(remoteTrashDir);
            }

            // 配置传输选项,添加回收站规则
            TransferOptions transferOpts = new TransferOptions();
            // 文件掩码规则:*匹配所有文件; recycle参数指定回收站路径
            // 若需保留原文件目录结构,使用recycle=/tmp/trash//(双斜杠)
            transferOpts.FileMask = $"*;recycle={remoteTrashDir}";

            // 执行本地到远程的目录同步
            SynchronizationResult syncResult = session.SynchronizeDirectories(
                SynchronizationMode.Remote, // 同步模式:使远程目录与本地一致
                @"C:\local\sync-folder", // 本地同步目录路径
                "/remote/target-folder", // 远程目标目录路径
                false, // 是否删除远程多余文件(按需调整)
                true, // 是否同步子目录
                SynchronizationCriteria.Time, // 同步判断依据:文件修改时间
                transferOpts);

            // 检查同步是否存在错误(可选)
            syncResult.Check();
        }
    }
}

关键细节说明

  • recycle参数的两种用法:
    • recycle=/tmp/trash:直接将被覆盖文件移动到回收站根目录,重名文件会自动添加后缀(如file.txt→file_1.txt)。
    • recycle=/tmp/trash//:双斜杠会保留原文件的完整路径结构,例如原文件/remote/docs/report.pdf会被移动到/tmp/trash/remote/docs/report.pdf。
  • 权限要求:确保WinSCP连接的远程用户对回收站目录拥有读写权限,否则文件移动操作会抛出权限异常。
  • 同步模式调整:若需将远程目录同步到本地,将SynchronizationMode.Remote改为SynchronizationMode.Local即可。

内容的提问来源于stack exchange,提问作者Nasir Islam Sujan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 05:40:22