outline
项目中需要把 windows server 上的数据同步到 linux server,方法很多,这里记录下自己采用的一种比较简单的方法。
准备工作
首先确保你 windows server 上装有 pscp.exe 。
下载地址:
可去的中,找到PSCP,下载。
也可以直接下载 PuTTY 内置的就有 PSCP 了。
安装之后进到 pscp.exe 所在目录下,查看使用帮助:
# 基本用法: -p 拷贝文件的时候保留源文件建立的时间。 -q 执行文件拷贝时,不显示任何提示消息。 -r 拷贝整个目录 -v 拷贝文件时,显示提示信息。 Usage: pscp [options] [user@]host:source target pscp [options] source [source...] [user@]host pscp [options] -ls user@host:filespec 用法: pscp [选项] [用户名@]主机:源文件 目标文件 pscp [选项] 源文件 [源文件……] [用户名@]主机 pscp [选项] -ls 用户名@主机:文件空间? Options: 选项: -p preserve file attributes 保护文件属性 -q quiet, don't show statistics 安静,不显示统计 -r copy directories recursively 复制子文件夹 -V print version information and exit 显示信息 -v show verbose messages -load sessname Load settings from saved session -load 加载,加载保存节的设定 -P port connect to specified port -P 端口,连接到指定空间端口 -l user connect with specified username -l 用户,用指定的用户连接空间 -pw passw login with specified password -pw 密码,用指定的密码登录空间 -1/-2 强迫 ssh 使用的版本 -4 -6 force use of IPv4 or IPv6 -C 打开压缩 -i key 钥匙,证明用的钥匙文件 -batch 关闭交互能力,也许 -unsafe 不安全,允许伺服端取代字符 (危险的)
代码实现
import osdef sync_data(cmd): os.system(cmd3) print('sync done')if __name__ == '__main__': cmd1 = r'cd C:\Program Files\PuTTY' cmd2 = r'pscp -pw **** -r D:\v-gazh\data\after_test\source v-gazh@10.150.144.153:/home/v-gazh/data/SCP_test' cmd3 = cmd1 + "&&" + cmd2 sync_data(cmd3)# 上述代码实现的是,把windows server 指定目录同步到 linux server 指定目录下。# cmd2 中 -pw 后面是要登陆的 linux 服务器密码,替换成你自己打就ok# 注: windows 下 cmd 终端里 执行两个命令可用 “&&” 连接
补充
# windows server 指定文件传输到Linxu服务器指定目录中。基本命令格式:pscp 文件 用户名@LinuxIP:目录# “ -l ”选项可以指定用户名。基本命令格式:pscp -l 用户名 文件 LinuxIP:目录# “ -r ”选项用于传输目录。基本命令格式:pscp -r 目录 用户名@LinuxIP:目录或使用命令格式:pscp -l 用户名 -r 目录 LinuxIP:目录
参数设置好后,只需要运行上面 py 文件即可一键完成数据传输。