Windows10 将某一台主机上修改过的文件分发到其他主机,完成各个主机间的文件同步

目录

一、前言

二、环境说明

三、在win10中共享文件夹

三、局域网中其他主机如何访问被共享的文件夹

四、另一种访问共享文件夹的方式

五、将修改过的文件更新到远程主机上


一、前言

最近需要通过多台主机共同完成一个任务,要求所涉及的主机都要运行一些代码。我本来是在一台主机上写完代码,然后将其他主机所涉及的代码文件通过远程传输复制到对应主机上。但我后来觉得这样太麻烦了,因为每次修改代码文件都需要把文件复制到对应的主机上。所以决定将这个文件同步过程也在代码中自动化,以使得我能够很方便地不断调试。

那么问题就来了,我所有的主机都是win10专业版操作系统,文件传输可以通过远程桌面连接或其他软件形式解决,但通过软件来操作传输一般是不可编程的,即无法在代码中完成这个行为。我希望找到像Linux中scp的命令一样的方法,那样就可以通过脚本来自动化这个过程。然而,在寻找这个的过程中,我找到了win10中传输文件更加好用的方法——共享文件夹。某台主机共享了自己的文件夹之后,其他在相同局域网中的主机就可以访问到被共享的文件夹,而且操作共享文件夹的方式与本地文件夹完全相同,那么就可以将文件传输问题变成文件在不同文件夹中的复制。用代码实现这个过程,问题就迎刃而解。

 

二、环境说明

操作系统:win10专业版。

语言:python

网络:(专用)局域网

 

三、在win10中共享文件夹

目前搜索“共享文件夹”得到的结果大多数是不能用的方法——在 Windows 10 中,通过网络共享文件和文件夹的某些功能已发生变化,包括删除了家庭组。现在可用的方法如下[1]:

1、右键单击或按下某个文件,选择“将访问权限授予”>“特定用户”。

2、弹出如下界面,点击下拉菜单,选择“Everyone”,点击共享按钮

3、看到如下结果,则表示共享成功

 

三、局域网中其他主机如何访问被共享的文件夹

一般来说,如果两台主机在同一个局域网内,那么只要双方都打开网络发现,主机之间就可以互相看到。打开网络发现的过程如下:

1、双击“此电脑”,点击“网络”,如果没有打开网络发现,则会出现如下提示

2、将提示信息关闭,单击上面的提示横幅,点击“启用网络发现和文件共享”

3、共享文件夹的主机(服务机)和客户机都做了上述操作后,客户机中的网络界面如下:

4、上图中计算机下的两个小电脑,左边代表客户机,右边代表服务机。双击进入服务机,进入需要输入账号和密码(与远程桌面连接相同)

5、输入正确的账号密码,就可以看到服务机共享的文件夹了

 

四、另一种访问共享文件夹的方式

启用网络发现的方式比较直观,但有时候可能不希望开启网络发现,此时也是能够访问到共享文件夹的(在同一个局域网内)。注意到,在服务机共享文件夹的最后一步有这个提示

因此,在文件夹中的路径输入\\DESKTOP-NORO7OI\Foxit PhantomPDF即可直接进入被共享的文件夹

 

五、将修改过的文件更新到远程主机上

python语言的shutil模块提供copy函数,用于复制文件,其定义为

shutil.copy(src, dst)

其中src和dst是文件的原始路径和复制的目标路径。如果目标路径已存在对应文件,这个函数将强制覆盖文件,所以可以达到更新文件的效果。我将本地路径传入src,目标路径为远程路径,如

import shutil
shutil.copy('.\\notes.txt', '\\\\DESKTOP-NORO7OI\\Foxit PhantomPDF\\notes.txt')

上述语句将本地当前路径下的notes.txt复制到了远程主机上,依然以notes.txt为名称

在多台主机的情况下,伪代码如下

import shutil
local_path = 'the path of a local file'
remote_path = '\\\\DESKTOP-NORO7OI\\the destination of copy function'
shutil.copy(local_path, remote_path)

local_path_2 = 'another path of a local file'
remote_path_2 = '\\\\another name of host\\the destination of copy function'
shutil.copy(local_path_2, remote_path_2)

...

上述过程可以无限添加,也可以写成循环,这些不在本文讨论范围内,毕竟主要需要这些,其他操作都是看自己的情况来定。这样就可以在某台主机上更新完文件之后,将远程主机需要的文件直接分发到远程主机上,当然前提是必须在同一个局域网内。

Reference:

[1] Microsoft支持文档 -- https://support.microsoft.com/zh-cn/windows/%E5%9C%A8-windows-10-%E4%B8%AD%E9%80%9A%E8%BF%87%E7%BD%91%E7%BB%9C%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6-b58704b2-f53a-4b82-7bc1-80f9994725bf


版权声明:本文为chenyinquan9211原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。