Python parallel-ssh 这个库实现 os.walk 怎么做有人知道吗?

2022-10-21 13:34:17 +08:00
 chenqh

如题

没有找到例子

2126 次点击
所在节点    Python
28 条回复
ysc3839
2022-10-21 15:20:39 +08:00
执行 find 命令然后解析输出不行吗?
chenqh
2022-10-21 15:38:32 +08:00
@ysc3839 要这么暴力吗?
ysc3839
2022-10-21 15:51:04 +08:00
@chenqh os.walk 不也是这样吗?
chenqh
2022-10-21 16:01:31 +08:00
@ysc3839 os.walk 可以通过 os.list_dir 然后 os.path.stat 判断 dir 来做啊
ysc3839
2022-10-21 16:03:43 +08:00
@chenqh 啥意思?
chenqh
2022-10-21 16:57:40 +08:00
@ysc3839 os.walk 其实可以通过 os.listdir, 然后获取 stat 来做
Shazoo
2022-10-21 17:24:21 +08:00
这个 ssh 库只支持 scp 和 sftp 的 copy 文件操作,其他都没实现。
所以,没有什么好办法去做这事。

1 楼说的就是很优的解了,不过也得考虑目标机器没有 find 命令的情况----好比对面是个 busybox……

你还是老老实实的解析 ls 吧,这个基本没啥问题。
ysc3839
2022-10-21 17:35:25 +08:00
@chenqh 你的意思是要拿到路径的同时拿到 stat ?那可以再调用 stat 命令,或者根据需求调整 find 的参数提前过滤
ysc3839
2022-10-21 18:02:45 +08:00
@Shazoo 解析 ls 也是可以的方案,印象中 SSH 的 SCP 协议列举文件就是解析 ls 等命令输出的。
chenqh
2022-10-21 18:34:28 +08:00
@Shazoo 痛苦
chenqh
2022-10-21 18:34:48 +08:00
@ysc3839 我想要他提供 API 来搞,去掉 issue 试试
ClericPy
2022-10-21 20:35:37 +08:00
呃, 如果远程 tree 之类的命令 > 到一个文件然后把文件拉下来咋样(或者直接从 ssh 传回来)... 平时很少折腾这种事, 这库没用过, 类似 fabric ansible 的么
chenqh
2022-10-21 20:55:08 +08:00
@ClericPy 我用 paramiko 写了一版,能走通,但是太慢了,遍历一遍所有文件夹大概要 36-40s
ClericPy
2022-10-21 20:56:57 +08:00
@chenqh 所以还是换思路吧... 不知道原始需求没法替你着急了, 加油哈哈
chenqh
2022-10-21 21:25:56 +08:00
@ClericPy 原始需求就是我有一个 virtualbox,我要通过 sftp 里面把一些文件夹自动下载到 windows 下面,同步到最新状态,

自动下载到 windows 的作用,我有另外一 py 脚本来做备份,这就是我的需求
ClericPy
2022-10-21 21:28:25 +08:00
@chenqh 所以这本身不是一个同步软件该干的事么, 为啥要自己写... 自己搞增量同步远不如现成的软件啊, 拉个桥接到同网段里, 秒级同步的
chenqh
2022-10-21 21:31:18 +08:00
@ClericPy 当时没有找到,或者说我不会用
ClericPy
2022-10-21 21:37:21 +08:00
@chenqh 大哥... 我被你带沟里了... VBOX 直接挂个共享目录啊, 我在公司里就这么挂的...

共享目录基本没啥大问题, 编码问题目前没遇到过, 少数奇葩文件提前删了也没事, 唯一不好使的就是如果频繁读写可能有点扛不住(2000QPS 写日志瓶颈了结果只有 100 多 QPS, 查了好久才发现是共享盘性能不行...)
Aumujun
2022-10-21 21:42:18 +08:00
你可以用 inotify+rsync 实现
chenqh
2022-10-21 21:42:27 +08:00
@ClericPy 大哥,我用的 vagrant 啊,而且 virtualbox 有时候挂不成功啊,我也不知道为什么,所以我就没有挂在那里了,还有我的文件夹不在那个地方啊,我记得 vagrant 好像是默认挂在 /vagrant 这里,但是我的习惯是代码放在 /home/vagrant 下面

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/888705

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX