`

python实现文件夹同步

阅读更多

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

 

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()

注:

1,日志会输出到SynDirTool.py文件的相同目录的SynDirTool.log文件中

2,如果目的文件夹已有该文件,且该文件较新,则不再会复制源文件夹中的文件

 

 

 

分享到:
评论

相关推荐

    python实现两个文件夹的同步

    其实无论windows还是Linux,简单地去实现两个两个文件夹的同步只需系统自带的复制命令加参数就可以了。 WINDOWS: xcopy 源文件夹\* 目标文件夹 /s /e /y Linux: cp -r 源文件夹/* 目标文件夹 这里使用python来...

    python做的Ymodem的文件夹同步

    单位要做内外网隔离,对小文件有需要做单向的文件夹同步,就做了这个基于python的串口文件夹同步软件,有需要的兄弟可以参考一下

    Python FTP两个文件夹间的同步实例代码

    本文通过实例代码给大家介绍了python ftp两个文件夹间的同步,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧

    python rsync服务器之间文件夹同步脚本

    主要为大家详细介绍了python rsync服务器之间文件夹同步脚本,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    本地两个文件夹同步,python语言,linux系统通过(自己编写,可用)

    本地两个文件夹同步,新建、删除、修改、移动位置、重命名、复制目录或者文件等操作都可以实现,修改文件路径即可用,watchdog思想编写。项目设计涉及到这一块,自己通过watchdog编写了同步的代码,希望可以给大家...

    python小分段同步文件夹工具

    本脚本采用hash md5方式,分小区块,比较源文件夹和目标文件夹之前的差异并同步复制,只支持源文件夹到目标文件夹单向同步,并编写了判断键盘退出快捷键Q的子线程,提高退出时的速度。同时提供了断点断续功能,按q...

    python3利用tcp实现文件夹远程传输

    本文实例为大家分享了python实现文件夹远程传输的具体代码,供大家参考,具体内容如下 实现功能: 通过tcp协议模拟文件夹的下载,注意是文件夹,不是文件。 下面让我们实现以下: 其中有部分功能还未实现有兴趣的...

    python版分段同步复制文件夹目录工具

    本脚本采用hash md5方式,分小区块,比较源文件夹和目标文件夹之前的差异并同步复制,只支持源文件夹到目标文件夹单向同步,并编写了判断键盘退出快捷键Q的子线程,提高退出时的速度。同时提供了断点断续功能,按q...

    基于python的文件夹管理库

    参数 onlisten 是否监听比同步文件夹变动:bool 参数 scan 是否在现在扫描(否则会在访问时进行扫描) 属性 files 文件夹中的文件列表:FileList 属性 subfolder 文件夹中的子文件夹:FolderList 方法 hasFolder,hasFile ...

    使用python快速实现不同机器间文件夹共享方式

    Python有一个比较好用的功能,那就是很方便的实现共享文件夹。 首先两台主机都需要安装python,在未建立逻辑连接之前它们是不区分主从机的。 例如:现在有两台机器,一台windows和一台linux,现在你想要让linux机器...

    python检测文件夹变化,并拷贝有更新的文件到对应目录的方法

    今天小编就为大家分享一篇python检测文件夹变化,并拷贝有更新的文件到对应目录的方法。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    socket tcp同步文件夹

    基于python socket tcp局域网同步文件夹功能。 需要局域网传输同步工具可直接下载使用.

    Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法

    本文实例讲述了Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法。分享给大家供大家参考。具体如下: 这个东东本来是做来给公司数据同步用的:新服务器还没正式启用,旧的服务器还在使用,每天都有大量...

    cptool:使用 Python 同步文件夹

    工具一个能够同步两个文件夹或恢复同步结果的简短 Python 脚本。 阅读更多。执照MIT

    python同步两个文件夹下的内容

    主要为大家详细介绍了python同步两个文件夹下的内容,包括子文件夹,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    SyncAndVerify:在Windows上同步两个文件夹,比较两个文件夹(python)

    同步两个文件夹 通过比较文件元数据来比较两个文件夹 通过比较文件内容来比较两个文件夹 版权 SyncAndVerify:copyright:版权所有2021, 链接 快速开始 安装python python main.py 执照 回馈 请向提交您的反馈。

    西交利物浦大学网络程序设计大作业,基于Python Socket实现的局域网文件同步工具

    2022年8月份接的单子,任务是做一个用Python Socket实现的文件同步工具,本质上就是一个FTP, 同步的思路是创建扫描线程,扫描当前share文件夹下的文件信息,将其与旧信息做一个对称差集,就得到了那些有变化的文件...

    文件夹双向加密同步工具syncrypto.zip

    同步过程是双向的,所以,文件不仅仅是从明文文件夹同步到加密文件夹,同样也会从加密文件夹同步到 明文文件夹,syncrypto会根据算法选择最新的。 如果有冲突的话,syncrypto会将明文文件重命名(加上单词...

Global site tag (gtag.js) - Google Analytics