outline
项目中需要把 windows server 上的数据同步到 linux server,方法很多,这里记录下自己采用的一种比较简单的方法。
准备工作
首先确保你 windows server 上装有 pscp.exe 。
下载地址:
也可以直接下载 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 os def 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 [email protected]:/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 文件即可一键完成数据传输。