精华内容
下载资源
问答
  • 主要为大家详细介绍了利用python实现两个文件夹同步,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 利用python实现两个文件夹同步

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

    原文转载于:https://www.cnblogs.com/geek-arking/p/10213449.html

    其实无论windows还是Linux,简单地去实现两个两个文件夹的同步只需系统自带的复制命令加参数就可以了。

    • WINDOWS :
    xcopy 源文件夹\* 目标文件夹 /s /e /y
    • Linux :
    cp -r 源文件夹/* 目标文件夹

    这里使用python来实现这些基本功能,并增加一些去重之类的增强功能。


    1、复制源文件夹中文件至目标文件夹 

    要想同步两个文件夹中的数据,基本思路首先需要遍历源文件夹中的信息,将源文件夹中的文件复制到目标文件夹。

    遍历文件夹采用os中的listdir函数就可以了。

    import os
    
    path_s = 'F:\\test\\s'
    path_t = 'F:\\test\\t'
    
    for filename in os.listdir(path_s):
        filename_s = path_s+os.sep+filename
        print '[*]  Source :',filename_s
        filename_t = path_t+os.sep+filename
        print '[*]  Target :',filename_t
        with open(filename_s,'rb') as f_s:
            with open(filename_t,'wb') as f_t:
                f_t.write(f_s.read())

    但是很明显这里没有考虑源文件夹中还会存在文件夹甚至多重文件夹的情况。

    2、源文件夹中存在多重文件夹

    一个简单的思路就是:在遍历源文件夹内的文件时,先判定当前文件这是文件还是文件夹。如果当前文件是文件夹的话,开始遍历此文件夹内的文件,如果里面还有文件夹,遍历这个文件夹,依次类推。利用递归的方法,代码如下:

    import os
    
    
    path_s = 'F:\\test\\s'
    path_t = 'F:\\test\\t'
    
    def copy_file(paths,patht):
        for filename in os.listdir(paths):
            filename_s = paths+os.sep+filename
            filename_t = patht+os.sep+filename
            if os.path.isdir(filename_s):
                if not os.path.exists(filename_t):
                    os.mkdir(filename_t) #在目标文件夹中创建对应的文件夹
                copy_file(filename_s,filename_t) # 递归
            else:
                print '[*]  Source :',filename_s
            
                print '[*]  Target :',filename_t
                with open(filename_s,'rb') as f_s:
                    with open(filename_t,'wb') as f_t:
                        f_t.write(f_s.read())
    
    
    copy_file(path_s,path_t)

    目前,简单的文件夹复制功能已经实现了。

    3、目标文件夹中已有文件不再复制

    一个简单的方法就是在目标文件夹中复制文件之前先利用函数“os.path.exists”判定这个文件是否存在。

    import os
    
    
    path_s = 'F:\\test\\s'
    path_t = 'F:\\test\\t'
    
    def copy_file(paths,patht):
        for filename in os.listdir(paths):
            filename_s = paths+os.sep+filename
            filename_t = patht+os.sep+filename
            if os.path.isdir(filename_s):
                if not os.path.exists(filename_t):
                    os.mkdir(filename_t)
                copy_file(filename_s,filename_t)
            else:
                if os.path.exists(filename_t):
                    print '[*] "%s" already exists! ' % filename_t
                else:
                    print '[*]  Source :',filename_s
            
                    print '[*]  Target :',filename_t
                    with open(filename_s,'rb') as f_s:
                        with open(filename_t,'wb') as f_t:
                            f_t.write(f_s.read())
    
    copy_file(path_s,path_t)
      

    这个办法避免了一部分已有文件的重复复制操作,减少了部分不必要的读写操作,但是却无法消除内容相同但名称、路径不同的重复文件。

    4、利用MD5判定重复文件

    目前判定两个文件是否相同,除了按字节逐个对比这个笨方法外,简单常用的办法就是利用MD5和CRC校验,或是按一定规律挑取文件的指定位置的数据块就行对比。

    这次利用文件的MD5值,将目标文件夹中已有文件的MD5值保存到列表或字典中,每在源文件夹中读取一个文件就判定该文件的MD5值是否已经存在于MD5列表,没有的话再进行复制操作,并将该文件的MD5值写入列表。

    import os
    import hashlib
    
    path_s = 'F:\\test\\s'
    path_t = 'F:\\test\\t'
    list_file = {}
    
    def create_file_list(path):
        for name in os.listdir(path):
            filename = path+os.sep+name
            if os.path.isdir(filename):
                create_file_list(filename)
            else:
                with open(filename,'rb') as f:
                    md5 = hashlib.md5(f.read()).hexdigest()
                    if md5 not in list_file:
                        list_file[md5] = 1
    
    def copy_file(paths,patht):
        for filename in os.listdir(paths):
            filename_s = paths+os.sep+filename
            filename_t = patht+os.sep+filename
            if os.path.isdir(filename_s):
                if not os.path.exists(filename_t):
                    os.mkdir(filename_t)
                copy_file(filename_s,filename_t)
            else:
                if os.path.exists(filename_t):
                    print '[*] "%s" already exists! ' % filename_t
                else:
                    with open(filename_s,'rb') as f_s:
                        data = f_s.read()
                        file_md5 = hashlib.md5(data).hexdigest()
                        if file_md5 not in list_file:
                            list_file[file_md5] = 1
                            print '[*]  Source :',filename_s
                            print '[*]  Target :',filename_t
                            with open(filename_t,'wb') as f_t:
                                f_t.write(data)
                        else:
                            print '[*] "%s"\'s MD5 already exists! ' % filename_t
    
    create_file_list(path_t)
    copy_file(path_s,path_t)

    如下图,运行后内容相同的几个文件,只有第一次读取到的时候才写入目标文件夹,其他路径下的文件并没有复制到目标文件夹。

    展开全文
  • 主要介绍了使用c#同步两个子目录文件的方法,大家参考使用吧
  • 主要为大家详细介绍了python同步两个文件夹下的内容,包括子文件夹,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 同步 Sincronización de dos 地毯 en .Net csSync [LikeString] [选项] [从文件夹] [到文件夹] 选项:--v Verbose --dSD 不要检查相同日期的文件 [创建和修改] --cEF 清除空文件夹 --pD 并行目录 --pF 并行文件
  • 本文通过实例代码给大家介绍了python ftp两个文件夹间的同步,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
  • 同步两个文件夹 通过比较文件元数据来比较两个文件夹 通过比较文件内容来比较两个文件夹 版权 SyncAndVerify:copyright:版权所有2021, 链接 快速开始 安装python python main.py 执照 回馈 请向提交您的反馈。
  • 你是否有这样的需求,在Windows10下实现两个/多个文件夹的关联/同步更新? 我相信你有,不是现在就是在不久的未来。实现文件夹下子文件夹和文件的同步更新,是个隐形的诉求。 首先,说明一下,为什么强调是在在...

    你是否有这样的需求,在Windows10下实现两个/多个文件夹的关联/同步更新

    我相信你有,不是现在就是在不久的未来。实现文件夹下子文件夹和文件的同步更新,是个隐形的诉求
    首先,说明一下,为什么强调是在在Windows10下,而不是在WindowsXP、Windows7等以及Linux系统下。

    公文包是什么?
    首先要说一下,公文包。公文包可以将文件与其对应部分进行同步。在旧版Windows版本下,有Windows公文包,从Windows 95开始引入,到Windows 8都可以使用,只不过Windows 8里默认隐藏了这个功能。可以说是云同步的祖宗了吧。公文包是长这样的(截图不太清楚,请大家凑合看):
    WindowsXP系统下的公文包
    这是WindowsXP系统下的公文包的样子
    公文包就是长这个样子
    后来,随着网络的普及,Windows10“擅自”删除了“公文包”功能,改用了需要联网操作同步的Dropbox、Onedrive等。微软,自以为网络无处不在了。至此,公文包退出历史舞台。Dropbox、Onedrive等有缺点,一是需要联网;二是安全问题,你同步到Dropbox、Onedrive等上的数据,我们都在监控之下了,微软说你的数据违规,禁止操作、访问,你也没有办法,可能你连备份的机会都没有。公文包,在现实生活还是有需求的,本地计算机可以无网状态进行同步操作。通过查阅资料发现,在Windows10系统下,需要使用mklink命令实现两个文件夹的关联。

    mklink是windows系统下创建符号链接和硬链接的命令工具,它是一个很好的解决文件系统问题的工具。使用它需要管理员权限。因为powershell不支持mklink命令,所以要在前面加cmd /c表示用cmd来运行该命令,路径注意引号

    Linux系统是自由开放开源的系统,给你系统用户“无限”的权限,想怎么搞就怎么搞。不像Windows系统,稍微往系统内部操作以下,就说权限不够,要去好几个地方去修改权限。
    执行如下Windows命令:

    C:\Users\bai>mklink /D D:\Foo D:\OneDrive\Foo
    你没有足够的权限执行此操作。
    

    默认我们的用户账户是 Administrators 组的,会继承它的权限设定。正常情况下,我们使用 mklink 是可以成功执行的。但如果文件系统的设置比较奇怪或者重装过系统,那么可能出现没有权限的错误。
    这时,使用管理员权限启动 cmd 是最简单的做法。不过也可以考虑在 本地安全策略(secpol.msc)\本地策略\用户权利分配 中添加当前用户。即:

    1. Win+R—>输入:secpol.msc,点击“确定”;
    2. 如图所示在这里插入图片描述
    3. 如图所示。在2处填写你的用户名。在这里插入图片描述

    通过 mklink 命令可以创建文件或文件夹的链接,而这种链接跟快捷方式是不一样的。mklink 可以像创建快捷方式一样建立文件或文件夹的链接,但不同于快捷方式的是,mklink 创建的链接绝大多数程序都不会认为那是一个链接,而是一个实实在在的文件或文件夹。mklink 可以创建符号链接、硬链接和目录链接。

    在 cmd 中输入 mklink 即可看到以下这样的帮助信息。
    在这里插入图片描述

    说一下它们之间的大体区别:

    使用方式适用于快捷方式小箭头
    不带参数文件
    /D文件夹
    /J文件夹
    /H文件

    表格从上到下的行为,从像快捷方式到像两个独立的文件夹。
    注:快捷方式小箭头是,"<<==>>"

    例如,将E盘的bai文件夹映射到D盘并重命名为b1

    mklink /d /j D:\b1 E:\bai
    

    这样即为完成了,两个文件夹的关联/映射关系,更改任意文件夹内容、以及其文件内容均会进行同步。

    展开全文
  • 实现两个文件夹同步
  • Windows系统下实现两个文件夹自动同步问题(mklink命令的使用)例:E:\My OneNote文件夹同步到OneDrive中1、以管理员身份打开cmd2、输入mklink/d C:\Users\XXX\OneDrive\My OneNote E:\My OneNote ,敲回车3、当...

    Windows系统下实现两个文件夹自动同步问题(mklink命令的使用)

    例:E:\My OneNote文件夹同步到OneDrive中
    路径1:C:\Users\XXX\OneDrive\My OneNote
    路径2:E:\My OneNote

    步骤:
    1、以管理员身份打开cmd
    2、输入mklink/d C:\Users\XXX\OneDrive\My OneNote E:\My OneNote ,敲回车
    3、当“出现为 C:\Users\XXX\OneDrive\My OneNote <<===>>E:\My OneNote 创建的符号链接”,即为成功
    4、注意:

    1). "C:\Users\XXX\OneDrive\My OneNote"的“My OneNote”必须和“E:\My OneNote”的“My OneNote”一模一样,否则会出现“当文件已存在时,无法创建该文件。”
    2). 或者mklink/d C:\Users\XXX\OneDrive\xxx E:\My OneNote(PS,xxx为该目录下不存在的一个文件夹,即在该目录下新建一个xxx的文件夹与E:\My OneNote同步)

    展开全文
  • Windows下两个文件夹同步

    千次阅读 2019-11-11 16:23:59
    参考:... ... 需求:A服务器和B服务器同时需要部署两个相同的程序,上传的文件和数据库数据共享。 数据库数据共享好说,文件共享是读取的本地的文件,假如在A中上传文件从B中本地...

     

    参考:https://blog.csdn.net/weixin_42184538/article/details/86571119

               https://www.jianshu.com/p/b1614a073087

    需求:A服务器和B服务器同时需要部署两个相同的程序,上传的文件和数据库数据共享。
    数据库数据共享好说,文件共享是读取的本地的文件,假如在A中上传文件从B中本地找不到,所以要共享文件夹中的数据。

    解决方案:
    1.A中创建文件夹共享。
    2.B中将A中的共享文件夹映射网络驱动器。
    3.B中执行以下命令。

    #    /d 给目录创建符号链接,简称符号链接、软链接;
    mklink /d  B中同步的文件夹路径(必须不存在)  B中映射了A的网络驱动器路径

     

    展开全文
  • windows 实时自动同步两个文件夹

    千次阅读 2020-03-24 21:22:23
    1.使用SyncToy软件同步两个文件夹; 但SyncToy能实时自动同步,需要手动同步。 2.使用批处理文件不断循环运行SyncToy,实现实时自动同步。相比另一个使用windos taskscheduler来自动同步的方法的优势是:task...
  • 根据文件最后一次修改时间,实现同步两个文件夹内所有文件,以达到两个文件夹下面所有文件同步的功能。 由java语言编写,可以在任意安装了jdk6.0的机器上运行。
  • 本地两个文件夹同步,新建、删除、修改、移动位置、重命名、复制目录或者文件等操作都可以实现,修改文件路径即可用,watchdog思想编写。项目设计涉及到这一块,自己通过watchdog编写了同步的代码,希望可以给大家...
  • 一个同步两个文件夹的小工具。 这主要是一个与JavaFX等配合使用的小项目。仍然有许多开放的TODO: 它更美丽 调整性能并并行处理部分代码 彻底检查代码的丑陋部分,整理整齐,也许还可以提供更好的MVC
  • 进入命令模式cmd mklink /d E:\xianzong2 E:\xianzong 注意后面的文件夹要存在 而前面的文件夹不存在 打这命令会自动生成一xianzong2 的文件夹
  • 可以将源文件夹的内容同步到目标文件夹,获取最新的内容,而不必要去复制所有内容。
  • python 同步文件夹
  • 要想同步两个文件夹中的数据,基本思路首先需要遍历源文件夹中的信息,将源文件夹中的文件复制到目标文件夹,然后再将目标文件夹中有的文件而源文件夹中没有的文件予以删除。 复制文件时使用了操作系统封装好的xcopy...
  • CryptSync是一个小型实用程序,它在加密一个文件夹中的内容时同步两个文件夹。 这意味着两个文件夹之一的所有文件(使用的文件)均未加密,而另一个文件夹的所有文件均已加密。 同步以两种方式起作用:一个文件夹中...
  • linux双向同步两个本地文件夹

    千次阅读 2020-03-04 18:19:25
    思路 用inotify监控文件夹,如果文件夹内有文件变化则输出变化情况 每当inotify检测到文件变化时,就调用unison,把当前...创建两个进程分别进行单向同步,从而变成了双向同步。 安装必要程序: sudo apt instal...
  • 2个文件夹同步

    2015-11-10 14:53:20
    2文件里面的资料同步,A同步到B,C#代码 初学者很合适
  • python--FTP两个文件夹间的同步

    千次阅读 2018-05-24 11:20:31
    # -*- coding: utf-8 -*- ''''''' ftp自动检测源文件夹的更新,将源文件夹更新的内容拷贝到目标文件夹中 使用树的层序遍历算法,支持深度目录拷贝 ''' import os from ftplib import FTP import os,...
  • * 本软件提供文件夹的备份功能,备份的模式相当于两个文件夹同步同步的标准是目标文件夹完全依赖于源文件夹, * 即是说源文件夹里面的任何改动目标文件夹都会模仿,最后的结果是目标文件夹和源文件夹“一摸...
  • 同步方式有源文件夹同步和各向同步种方式: 一、源文件夹同步方式将以一个文件夹为基准,删除或覆盖其余文件夹与源文件相比较相同的文件。 二、各向同步方式则自动将更新的文件覆盖几个同步文件夹中的旧文件。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 139,964
精华内容 55,985
关键字:

如何让两个文件夹不同步