如何使用winscp从包含数百万个文件的文件夹中将文件从linux复制到windows

如何使用winscp从包含数百万个文件的文件夹中将文件从linux复制到windows

我需要将文件从 Linux 机器复制到 Windows 机器,其中唯一可以打开的端口是 SSH (22)。
我可以使用 WinSCP 连接到 Linux 机器,但问题是一旦我尝试导航到所需的文件夹,WinSCP 就会卡住,因为该文件夹包含数百万条记录。
基本上我并不关心我复制哪些文件,我很高兴找到一个解决方案,使我能够只复制最新的 200 个文件。
有任何想法吗?
我尝试过使用ls -f | less,但这并没有达到目的。

答案1

如果您可以放弃WinSCP要求并愿意使用西格文相反,这两条线就可以解决问题:

$ ssh linuxbox 'ls -t1 /path/to/files | head -200' > files.list
$ rsync -ave ssh --files-from=files.list linuxbox:/path/to/files local/dest

这将在 WinSCP 不起作用的情况下起作用,因为它不尝试构建数百万个文件的 GUI 图像。它只是从远程设备请求 200 个最近接触过的文件的列表,然后按名称将它们传输到本地计算机。

rsync并且ssh不在默认的 Cygwin 安装中。当您进入软件包选择屏幕时,请务必选择它们Cygwin 安装程序

答案2

只是为了确保我正确理解你的问题:
你只能坐在 Windows 机器前,而不能坐在 Linux 机器前,对吧?

虽然我不熟悉 WinSCP 的特性,但应该可以在 WinSCP 设置中的某处指定其他 SCP/SSH 选项。

我想,为了列出目录中包含的文件,WinSCP 首先通过连接ssh,然后用ls.
确保ssh连接使用压缩。这可以通过ssh参数来完成-Cssh -C
在大多数情况下,这会显着减少要传输的体积,并在过去为我省去了很多麻烦。

不幸的是,启用 SCP 压缩有点棘手。scp已获得参数-o,该参数定义了key value由 定义的一对选项ssh_config
在您的情况下,您可以使用Compression yes默认值no

然而,压缩减少了带宽,但增加了双方(主机和客户端)处理器的负载。如果您要传输的数百万个文件是未压缩的纯文本文件,我会尝试 SCP 压缩。它们是二进制文件还是已经压缩的档案,我不会使用 SCP 压缩。

答案3

当传输大量文件时,我会考虑使用tar或其他一些归档工具在 UNIX 端创建一个大文件(也可以压缩),然后传输该较大的文件而不是许多较小的文件。

我对 Windows 不太熟悉,不知道有哪些归档软件可用(zip?)。

相关内容