python同步远程文件夹_python实现文件夹同步

定义SynDirTool类,用于同步两个文件夹的内容,从/usr/local/a文件夹到/usr/local/b文件夹,执行方法:

Python代码python SynDirTool.py /usr/local/a /usr/local/b

SynDirTool.py文件内容:#!/usr/bin/python

# -*- coding:utf-8 -*-

import os

import shutil

import sys

import logging

class SynDirTool:

def __init__(self,fromdir,todir):

self.fromdir = fromdir

self.todir = todir

def synDir(self):

return self.__copyDir(self.fromdir,self.todir)

def __copyDir(self,fromdir,todir):

#防止该目录不存在,创建目录

self.__mkdir(todir)

count = 0

for filename in os.listdir(fromdir):

if filename.startswith('.'):

continue

fromfile = fromdir + os.sep + filename

tofile = todir + os.sep + filename

if os.path.isdir(fromfile):

count += self.__copyDir(fromfile,tofile)

else:

count += self.__copyFile(fromfile,tofile)

return count

def __copyFile(self,fromfile,tofile):

if not os.path.exists(tofile) :

shutil.copy2(fromfile,tofile)

logging.info("新增%s ==> %s" % (fromfile,tofile))

return 1

fromstat = os.stat(fromfile)

tostat = os.stat(tofile)

if fromstat.st_ctime > tostat.st_ctime:

shutil.copy2(fromfile,tofile)

logging.info("更新%s ==> %s" % (fromfile,tofile))

return 1

return 0

def __mkdir(self,path):

# 去除首位空格

path=path.strip()

# 去除尾部 \ 符号 或者 /

path=path.rstrip(os.sep)

# 判断路径是否存在

isExists=os.path.exists(path)

# 判断结果

if not isExists:

# 如果不存在则创建目录

logging.info(path+' 目录创建成功')

# 创建目录操作函数

os.makedirs(path)

if __name__ == '__main__':

srcdir=sys.argv[1]

descdir=sys.argv[2]

logging.basicConfig(filename='SynDirTool.log', level=logging.INFO)

tool = SynDirTool(srcdir,descdir)

count += tool.synDir()

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Python的paramiko库实现在Windows上与Linux机器之间的文件传输。具体步骤如下: 1. 安装paramiko库 可以使用pip命令安装paramiko库,命令为: ``` pip install paramiko ``` 2. 编写脚本 在Windows上编写一个Python脚本,使用paramiko库连接到Linux机器,然后执行文件同步命令。 以下是示例代码: ```python import os import paramiko import time # 定义本地和远程目录 local_path = '/path/to/local/dir' remote_path = '/path/to/remote/dir' # 定义Linux机器的IP地址和登录信息 ip = '192.168.1.100' username = 'username' password = 'password' # 创建SSH客户端 client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(ip, username=username, password=password) # 定义同步函数 def sync_files(): # 获取本地目录下的文件列表 files = os.listdir(local_path) # 遍历本地文件列表,将文件同步远程目录 for file in files: local_file_path = os.path.join(local_path, file) remote_file_path = os.path.join(remote_path, file) # 判断是否为目录,如果是则递归同步 if os.path.isdir(local_file_path): # 创建远程目录 stdin, stdout, stderr = client.exec_command('mkdir -p ' + remote_file_path) stderr_lines = stderr.readlines() if len(stderr_lines) > 0: print(stderr_lines) # 递归同步子目录 sync_files(local_file_path, remote_file_path) else: # 同步文件 sftp = client.open_sftp() sftp.put(local_file_path, remote_file_path) sftp.close() # 同步文件,每隔5分钟同步一次 while True: sync_files() time.sleep(300) ``` 上述代码中,定义了本地目录和远程目录的路径,以及Linux机器的IP地址和登录信息。然后通过paramiko库创建SSH客户端,连接到Linux机器。接着定义了一个同步函数,用于将本地目录下的文件同步远程目录。在while循环中调用同步函数,每隔5分钟同步一次。 3. 运行脚本 在Windows上运行脚本即可实现定时同步文件文件夹至多台Linux机器。可以使用Windows的计划任务功能,或者使用第三方定时任务软件,如cron等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值