Python办公11:定时自动同步重要文件夹至移动硬盘或云端

发布时间:2026/8/25 14:55:20

Python办公11:定时自动同步重要文件夹至移动硬盘或云端
11备份专家——定时自动同步重要文件夹至移动硬盘或云端第二阶段文件管理与系统自动化9-15场景引入你的工作资料只存在电脑本地一旦硬盘损坏、电脑丢失或中勒索病毒几年的心血瞬间归零。专业的做法是定期备份把重要文件夹同步到移动硬盘或云端。手动复制粘贴容易忘记本节教你用 Python Windows 定时任务实现全自动备份。技术原理备份的核心是增量同步——只复制新增和修改的文件避免每次都全量拷贝。源文件夹工作资料 ↓ 对比差异 备份文件夹移动硬盘 ↓ 只复制变更 同步完成同步策略策略说明适用场景增量同步只复制新增/修改的文件日常备份推荐全量复制每次全部复制首次备份镜像同步备份端删除源端已删除的文件精确镜像差异备份只备份修改的部分节省空间大型文件环境准备pipinstallshutilshutil是 Python 内置模块无需额外安装。完整代码importosimportshutilimporttimefrompathlibimportPathfromdatetimeimportdatetime# 方案 1增量文件同步 defsync_folders(source_dir,backup_dir,log_fileNone): 将源文件夹增量同步到备份文件夹 参数: source_dir: 源文件夹路径原始文件 backup_dir: 备份文件夹路径目标位置 log_file: 日志文件路径可选 sourcePath(source_dir)backupPath(backup_dir)ifnotsource.exists():print(f错误源目录{source_dir}不存在)returnFalse# 创建备份目录backup.mkdir(parentsTrue,exist_okTrue)files_copied0files_updated0files_skipped0total_size0log_lines[]deflog(msg):print(msg)log_lines.append(msg)log(f[{datetime.now().strftime(%Y-%m-%d %H:%M:%S)}] 开始同步)log(f源目录:{source})log(f备份目录:{backup})log(-*50)# 遍历源目录所有文件forfile_pathinsource.rglob(*):iffile_path.is_file():# 计算相对路径rel_pathfile_path.relative_to(source)dest_pathbackup/rel_path# 判断是否需要复制need_copyFalseifnotdest_path.exists():need_copyTrueaction新增eliffile_path.stat().st_mtimedest_path.stat().st_mtime:need_copyTrueaction更新eliffile_path.stat().st_size!dest_path.stat().st_size:need_copyTrueaction大小变更ifneed_copy:# 确保目标目录存在dest_path.parent.mkdir(parentsTrue,exist_okTrue)try:shutil.copy2(str(file_path),str(dest_path))file_sizefile_path.stat().st_size total_sizefile_sizeifaction新增:files_copied1else:files_updated1log(f [{action}]{rel_path}({file_size/1024:.1f}KB))exceptExceptionase:log(f [失败]{rel_path}:{e})else:files_skipped1# 汇总报告log(-*50)log(f同步完成!)log(f新增文件:{files_copied})log(f更新文件:{files_updated})log(f跳过文件:{files_skipped})log(f总复制量:{total_size/1024/1024:.2f}MB)# 写入日志iflog_file:Path(log_file).parent.mkdir(parentsTrue,exist_okTrue)withopen(log_file,a,encodingutf-8)asf:f.write(\n.join(log_lines)\n\n)returnTrue# 方案 2打包压缩备份 defbackup_as_zip(source_dir,backup_dir): 将整个文件夹打包为带日期的 ZIP 压缩包 sourcePath(source_dir)backupPath(backup_dir)backup.mkdir(parentsTrue,exist_okTrue)date_strdatetime.now().strftime(%Y%m%d_%H%M%S)folder_namesource.name zip_namef{folder_name}_备份_{date_str}zip_pathshutil.make_archive(str(backup/zip_name),zip,str(source))file_sizeos.path.getsize(zip_path)/1024/1024print(f备份完成:{zip_path}({file_size:.2f}MB))returnzip_path# 方案 3保留多个历史版本 defversioned_backup(source_dir,backup_base_dir,keep_versions5): 保留多个历史版本的备份类似时间机器 参数: source_dir: 源目录 backup_base_dir: 备份根目录 keep_versions: 保留最近的几个版本 sourcePath(source_dir)backup_basePath(backup_base_dir)backup_base.mkdir(parentsTrue,exist_okTrue)# 按日期创建版本文件夹date_strdatetime.now().strftime(%Y%m%d_%H%M%S)version_dirbackup_base/fv{date_str}# 全量复制ifversion_dir.exists():shutil.rmtree(version_dir)shutil.copytree(str(source),str(version_dir))print(f已创建备份版本:{version_dir})# 清理旧版本保留最新的 keep_versions 个versionssorted(backup_base.iterdir())whilelen(versions)keep_versions:old_versionversions.pop(0)ifold_version.is_dir():shutil.rmtree(old_version)print(f已清理旧版本:{old_version})# 使用示例 if__name____main__:# 配置项SOURCErD:\工作资料BACKUPrE:\备份\工作资料# 方案 1增量同步sync_folders(SOURCE,BACKUP,log_filebackup_log.txt)# 方案 2打包压缩# backup_as_zip(SOURCE, rE:\备份)# 方案 3版本化备份保留 5 个版本# versioned_backup(SOURCE, rE:\备份\版本历史, keep_versions5)代码逐行解析1. 增量同步判断逻辑ifnotdest_path.exists():need_copyTrue# 新文件eliffile_path.stat().st_mtimedest_path.stat().st_mtime:need_copyTrue# 修改时间更新eliffile_path.stat().st_size!dest_path.stat().st_size:need_copyTrue# 大小变化三层判断确保新增文件、修改过的文件、大小变化的文件都会被复制。2. shutil.copy2 保留元数据shutil.copy2(str(file_path),str(dest_path))copy2与copy的区别copy2会同时复制文件的元数据修改时间、创建时间等保证备份文件的属性与源文件一致。3. 递归遍历forfile_pathinsource.rglob(*):.rglob(*)递归遍历所有子目录等价于os.walk()但使用pathlib的面向对象语法。进阶技巧技巧 1结合 Windows 任务计划程序实现定时备份创建一个.bat批处理文件echo off python D:\scripts\auto_backup.py打开任务计划程序 → 创建基本任务 → 设置触发器如每天 18:00→ 指定批处理文件。技巧 2备份完成后弹出通知importctypes# Windows 通知ctypes.windll.user32.MessageBoxW(0,备份完成,领慧备份助手,0x40)技巧 3只备份特定类型的文件# 只备份 .docx 和 .xlsx 文件ALLOWED_EXTENSIONS{.docx,.xlsx,.pdf}forfile_pathinsource.rglob(*):iffile_path.is_file()andfile_path.suffix.lower()inALLOWED_EXTENSIONS:# ... 同步逻辑常见问题Q1同步过程中断电/中断怎么办shutil.copy2是逐个文件复制的中断后重新运行脚本会自动跳过已完成的文件通过修改时间判断。Q2备份占用空间太大使用方案 3版本化备份配合keep_versions限制历史版本数量。或者使用zip压缩importzipfilewithzipfile.ZipFile(backup_path,w,zipfile.ZIP_DEFLATED)aszf:forfile_pathinsource.rglob(*):iffile_path.is_file():arcnamefile_path.relative_to(source)zf.write(file_path,arcname)Q3备份到网络驱动器/NAS路径使用 UNC 格式BACKUPr\\192.168.1.100\shared\backup\工作资料总结备份策略函数特点增量同步sync_folders()只复制变更速度快压缩打包backup_as_zip()一个 ZIP 文件方便传输版本保留versioned_backup()可回溯历史版本本节掌握了三种备份策略。推荐组合使用日常增量同步 每周压缩打包 保留 3-5 个版本。下一节预告12内容检索——搜索文件夹内数千个文档中的特定关键字

相关新闻

离职电脑隐私清理完整指南——临走前别忘把“自己“带走

离职电脑隐私清理完整指南——临走前别忘把“自己“带走

2026/8/25 14:55:20

背景:最近在试用期,想着万一下一步要走,公司电脑上的个人隐私得清理干净。微信聊天记录、浏览器密码、自己装的软件……哪些该删?怎么删才彻底?整理了一份超全的清理清单,按优先级和类别分好,离…

Windows系统文件WalletProxy.dll丢失找不到问题解决

Windows系统文件WalletProxy.dll丢失找不到问题解决

2026/8/25 14:45:20

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

为什么有些文档你永远不想打开第二次

为什么有些文档你永远不想打开第二次

2026/8/25 14:45:20

(1)背景 今天想聊一个每个人都经历过,但很少被正儿八经聊过的主题:为什么有些文档你永远不想打开第二次? 你点开一篇文档,看了两秒,关掉了。你甚至还没开始读,内容好坏都来不及判断。…

【好靶场】PHP反序列化绕过

【好靶场】PHP反序列化绕过

2026/8/25 15:35:22

【好靶场】PHP反序列化绕过【好靶场】PHP反序列化绕过:__wakeup 绕过与命令执行前置知识一、题目源码二、正常 Payload 为什么会失败三、绕过思路四、验证命令执行1. 本地 PHP 7.3.4 检测结果2. 授权靶场页面回显五、字符串长度一定要写对六、查找 Flag七、漏洞原理…

谈谈Flutter中的Key(二)——常用的Key

谈谈Flutter中的Key(二)——常用的Key

2026/8/25 15:35:22

前言在上一篇文章中,我们探讨了 Flutter 中 Key 的基本概念、作用以及为什么需要 Key。本文将继续深入,重点介绍 Flutter 开发中几种常用且重要的 Key 类型,包括它们的适用场景、使用方式以及背后的原理。1.Key的继承体系Key (抽象类) ├──…

Go实战:实时推送系统设计

Go实战:实时推送系统设计

2026/8/25 15:35:22

TL;DR 核心要点速览 Go适合后端API、微服务、云原生、CLI工具 高并发秒杀用Redis原子操作+限流 分布式锁用Redis SETNX或etcd租约 分布式事务用Saga模式或事件溯源 Go微服务通信用gRPC或消息队列 本篇是Go项目实战模块,含完整可运行项目 摘要:本文详细介绍实时推送系统设计,涵…

Python HTTPX 超时不是一个数字:连接池、重试与可观测性排障实战

Python HTTPX 超时不是一个数字:连接池、重试与可观测性排障实战

2026/8/25 15:35:22

Python HTTPX 超时不是一个数字:连接池、重试与可观测性排障实战 摘要:HTTP 请求“超时”并不只代表服务器慢。HTTPX 将超时拆为连接、读取、写入和连接池等待四类。本文用本地慢响应服务器稳定复现 ReadTimeout 与 PoolTimeout,再给出连接池…

MSSQL 手册

MSSQL 手册

2026/8/25 15:35:22

1、角色和权限1.1、固定数据库角色权限对照表角色名称核心权限典型应用场景重要备注db_accessadmin可以添加或删除数据库用户的访问权限(即管理数据库用户)。负责管理数据库用户账号的管理员。不能授予服务器级别权限,仅限当前数据库的用户管…

机场净空与无人机反制:低空安全防护体系方案

机场净空与无人机反制:低空安全防护体系方案

2026/8/25 15:25:22

机场净空保护不仅涉及跑道、进近面和起飞离场面的空间管理,还包含飞鸟、无人机、人员误入、障碍物施工和低空移动目标等多重风险。瀚泰机械将超长航时巡检无人机、反制探测设备、AI视频监控、巡检机器人与防爆机器人组合成“探测—识别—预警—处置—复盘”的低空安…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/24 19:53:32

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/24 19:56:07

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/24 21:16:09

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

2026/8/25 0:04:34

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory Meta Description:GetQzonehistory 是一个QQ空间历史说…

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

2026/8/25 0:04:35

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

2026/8/25 0:04:35

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https:/…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/22 4:13:47

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/22 1:32:34

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…