我是新来的Python,所以原谅我,如果这是基本的,我已经搜索,但无法找到答案。我试图将Perl脚本转换为连接到远程服务器的Python(3.x),并将给定目录中的文件复制到本地计算机。转移的完整性至关重要,并且内置了几个步骤以确保完整和准确的转移。是否可以通过SSH使用os.walk?
第一步是获取要传递给rsync的文件的完整列表。 Perl脚本具有以下行来实现:
@dir_list = `ssh [email protected] 'find $remote_dir -type f -exec /bin/dirname {} \\;'`;
@file_list = `ssh [email protected] 'find $remote_dir -type f -exec /bin/basename {} \\;'`;
两列被然后join
版创建$ full_list。
而不是开放两个单独的ssh
情况下,我想开一个,用os.walk
获取使用信息:
for remdirname, remdirnames, remfilesnames in os.walk(remotedir):
for remfilename in remfilesnames:
remfulllist.append(os.path.join(remdirname, remfilename))
感谢您的帮助,您可以提供。
除非'remotedir'挂载在某个地方,'os.walk'没有办法达到它。 –
你是否指''dirlist'行的'-type d'?我认为下面的@Bryan注释,你可以基于从python调用ssh来计算dir_list和file_list。 – nealmcb
如果你不需要任意的逻辑(即真正的Python代码)来处理要复制的文件列表,那么只要使用普通的rsync和includes/excludes/filters,你就会更加简单和健壮。 – mnagel