希望这篇文章对需要硬盘备份的各位有帮助。
要做出标题的效果的话分以下几个步骤:
1.在FreeFileSync中设置脚本
2.写一个自动打开脚本的程序
3.在任务计划程序里设置插入硬盘时的操作
接下来就一步一步来。
一、在FreeFileSync中设置配置文件
这是最简单的一步了。首先先下载FreeFileSync这个程序,点击下载按钮后往下划,翻过广告之后就能看见下载链接了。
网址:FreeFileSync: Open Source File Synchronization & Backup Software
安装也简单,因为我已经安装了就不再演示一遍了。
接下来是设置配置文件,在做这个之前先简单介绍一下这个软件的结构吧。
这个软件主要分左右两部分,左边蓝色这部分放的是已经保存的配置文件和摘要,右边则是软件的主体。其中有两个放文件地址的地方,左边是需要被备份的文件夹,右边是备份文件将被保存的位置(在图上被红圈圈出来的部分),这俩在进行同步操作时是一一对应的。最顶上的比较和同步功能类似git,能同步两边的文件,完成备份的效果。
在两边设置好文件的地址和备份的地址后即可点击左上角的保存按钮就可以保存配置文件了。
二、写一个自动打开配置文件的脚本
这一部分可以自由发挥,只要运行脚本时有打开的效果就行,这里用python做一个演示。
具体代码:
import os
import subprocess
# 指定要查找的硬盘卷标名称
target_drive_label = "茶杯猫仙品!"
#获取硬盘卷标名称
def getDriveName():
data = os.popen("wmic VOLUME GET Label").read()
return data
#打开对应程序
def open_application():
#配置程序地址(不能出现D:\)
ffs_path = r'SyncSetting\storeInDisk.ffs_gui'
#FreeFileSync软件本体的地址(完整地址)
freefilesync_path = r'D:\Program Files\FreeFileSync\FreeFileSync.exe'
command = r'"{freefilesync_path}" /"{ffs_path}"'
try:
subprocess.run(command, shell=True)
print("FreeFileSync 启动并加载配置文件成功。")
except subprocess.CalledProcessError as e:
print(f"执行命令时出现错误:{e}")
#主程序
driveName = getDriveName()
if target_drive_label in driveName:
open_application()
以下是我在写代码时遇到的一些问题:
1.由于os.popen的限制,python是没法直接打开FreeFileSync的配置文件的,需要用到命令行。
2.在命令行中,FreeFileSync的配置文件地址只能写相对地址(应该有写绝对地址的方式,只是我不知道),导致在实际运行时FreeFileSync的配置文件地址是由Python文件所在的地址决定的。也就是说Python文件在C盘的话,FreeFileSync的配置文件地址也必须在C盘,不然就会报错。
写完运行没问题之后就可以用pyinstaller封装成exe文件了。
三、在任务计划程序里设置插入硬盘时的操作
这部分操作会比较繁琐。
1.新建一个任务
Windows搜索“任务计划程序”,在右边选择“创建任务”并输入任务名称。
如果想的话也可以在左侧新建个文件夹。
2.设置触发器
新建一个触发器,并将开始任务的条件更改为“发生事件时”(不同操作系统可能会有不同的名称,但意思大差不差)
接下来要在日志中找到插入硬盘对应的事件和事件ID。
Windows搜索“计算机管理”,在系统工具>事件查看器>Windows日志>系统中查看插入硬盘对应的事件,这边建议多拔插几次硬盘,以确定一个每次插入都会出现的事件。
不同的电脑和硬盘触发的事件和事件ID都可能会不同。像很多教程会使用来源为DistrubutedCOM的警告事件(就是图里的警告事件),但在我这它就不会每次都出现。所以我使用的是每次拔插都会有的来源为Ntfs的事件。
记住事件来源和事件ID,回到任务计划程序中。
触发器的设置方法有两个,一个是基本,另一个是自定义。基本设置的话针对的是Windows日志中的事件,在右边输入刚记下的日志,日志源和事件ID即可。
其他教程都用的是这个基本设置,但我用这个就没一次成功过,我用的是下边的自定义设置。
选择自定义之后点击“编辑事件筛选器”,在“按日志”选项里选择Windows日志,在任务类别的上面那个输入框写事件ID之后点确定即可。
注意:自定义事件筛选器建成之后就不可修改(存疑,怎么会有这么不方便的设计,我猜是我搞错了什么),尽量一次就设置好,反正也不难。
3.设置操作
新建一个操作,选择启动程序(也就这个给用了),再选择第二步中写的脚本。
至此,任务计划程序就设置好了。
四、结束
设置好之后尝试拔插一下硬盘,看看有没有效果。
如果没有效果的话检查一下以下原因(都是我自己踩过的坑):
1.脚本中有筛选硬盘名字的部分,需要根据要备份的硬盘的名字更改(如果你跟我一样喜欢茶杯猫的话也可以不改程序,改硬盘名也不是不行)。
2.检查FreeFileSync配置文件地址,这个地址不对的话Python会弹出错误弹窗,需要根据弹窗中的错误信息更改文件地址(还有就是前面提到的盘符的问题,可以用FreeFileSync把写的配置文件连同文件夹一起copy到C盘里)。
3.检查设置触发器时的事件来源,如果把Windows日志和应用程序日志一起写上的话有可能会导致检索日志量过多导致卡顿,应用程序日志不选就行了。
其他的等我遇到了再补吧。
有一说一做完还是挺有成就感的。