我正在使用python的子进程模块通过SFTP在两台服务器之间传输文件。我可以连接到远程服务器的唯一方法是通过SFTP连接。
传输后,我需要验证本地服务器和远程服务器上的两个目录是否相同。这在本地服务器上非常容易,基本的find命令可以满足我的需求。但是我不知道如何在远程服务器上获得类似的结果。
这是文件结构的示例,两台计算机上的文件结构相同。
JobDirectory
Job1
test.txt
tonks.txt
Job2
wildlife.txt
Job3
jackinthebox.txt
happygilmore.txt
sadprogrammer.txt
所以我需要一个命令,该命令将从Job1
,Job2
和Job3
中获取文件名,并将它们返回给我。
类似
echo "ls *.txt" | sftp -q user@host.example.com:/path
在这里的追踪不太好,因为它需要特定的路径。我可以在目录中找到一个文件夹列表,并对每个文件夹运行sftp
命令,但这是很多远程连接。
我唯一可以使用的远程访问工具是子进程和Python的OS模块。无法使用Paramiko SFTP之类的东西。
答案 0 :(得分:0)
有关简单但效率低下的解决方案,请参见@pasabaporaqui对List recursively all files on sftp的回答。
由于您的模糊限制,唯一使用一个连接的解决方案是:
sftp
子进程ls
个命令的馈送顺序,每个目录一个ls
命令。