您的位置:首页 > 运维架构 > Linux

利用Python3在Windows同步文件到Linux服务器

2016-05-15 17:36 661 查看
摘要: 用Python3做了个小小小程序,只能同步指定路径下的文件,用了paramiko模块,用于SSH和SFTP

之前一直搞JavaEE,在本地开发修改的文件,经常需要同步到自己的Linux服务器上,由于有时候修改比较频繁,网络也不是特别好,所以都不是直接一个war包扔到服务器。

虽然WinSCP等工具已经有同步文件夹功能,不过自己还是闲得搞了一个,也顺便练练手。。。功能也还没WinSCP等工具那么强大,只能同步指定路径下的所有文件。。以后再慢慢改

用的是Python3.5,paramiko2.0

#!-*- coding: utf-8 -*-
"""
练手小程序
"""
import json
import paramiko
import os

def list_file(file_path):
return [file for file in os.listdir(file_path) if os.path.isfile(os.path.join(file_path, file))]

sync_file_count = 0
HOST_IP = "服务器IP"
HOST_PORT = 22
USERNAME = "登录名"
PASSWORD = "密码"

with open("config.json") as config_file:
path_config = json.load(config_file)
print("读取配置文件成功!")

try:
transport = paramiko.Transport((HOST_IP, HOST_PORT))
transport.connect(username=USERNAME, password=PASSWORD)
sftp = paramiko.SFTPClient.from_transport(transport)
print("连接远程服务器成功!")
print("*******************************同步文件--开始")
for path in path_config:
local_path = path["local_path"]
server_path = path["server_path"]
print(">>>>>>>>>>>>>>>遍历本地文件--开始")
filenames = list_file(local_path)
print(filenames)
print(">>>>>>>>>>>>>>>遍历本地文件--结束")
for filename in filenames:
sftp.put(local_path + filename, server_path + filename)
print("已同步本地文件: \"" + local_path + filename + "\"  到服务器路径:\"" + server_path + filename + "\"")
sync_file_count += 1

print("*******************************同步文件--结束")
finally:
sftp.close()
transport.close()

print("已经全部同步完成!一共同步了 " + str(sync_file_count) + " 个文件!")


还有个配置文件,配置本地目录地址,和远程目录地址

[
{
"local_path":"G:/Java/",
"server_path":"/home/java/"
},
{
"local_path":"G:/out/",
"server_path":"/home/out/"
}
]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: