Python脚本将文件从一个服务器获取到另一个服务器并将它们存储在不同的目录中?

2024-04-29 10:30:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究server 1。我需要编写一个Python脚本,在这里我需要连接到一个server 2,并从一个目录中获取某些文件(文件名以字母'HM'开头),然后将它们放到另一个目录中,该目录需要在运行时创建(因为对于程序的每次运行,都必须创建一个新目录,并且文件必须转储到其中),在server 1上。我需要用python来完成这项工作,而且我对这门语言还比较陌生。我不知道从哪里开始写代码。有没有一个解决方案不涉及“拖拉”文件?我看过paramiko,但据我所知,它只是一次传输一个文件。我甚至看过glob,但我不知道如何使用它。有人能帮我弄一下密码吗?


Tags: 文件代码程序目录脚本语言paramiko密码
3条回答

要传输你可能想查看的文件,帕拉米科

import os
import paramiko

localpath = '~/pathNameForToday/'
os.system('mkdir ' + localpath)
ssh = paramiko.SSHClient() 
ssh.load_host_keys(os.path.expanduser(os.path.join("~", ".ssh", "known_hosts")))
ssh.connect(server, username=username, password=password)
sftp = ssh.open_sftp()
sftp.get(remotepath, localpath)
sftp.close()
ssh.close() 

如果你想用地球仪你可以这样做:

import os
import re
import glob

filesiwant = re.compile('^HM.+') #if your files follow a more specific pattern and you don't know regular expressions you can give me a sample name and i'll give you the regex4it
path = '/server2/filedir/'
for infile in glob.glob( os.path.join(path, '*') ):
    if filesiwant.match(infile):
         print "current file is: " + infile

否则一个更简单的选择是使用os.listdir()

import os
for infile in os.listdir('/server2/filedir/'):
    ...`

这能回答你的问题吗?如果没有留下评论

Python不是我执行此任务的首选,但是您可以使用对系统的调用并运行mkdir和rsync。尤其是你可以

import os
os.system("mkdir DIRECTORY")
os.system("rsync -cav user@server2:/path/to/files/HM* DIRECTORY/")

只需使用ssh和tar。不需要让Python参与进来

$ ssh server2 tar cf - HM* | tar xf -

远程tar可以直接导入本地tar

相关问题 更多 >