平时做网站维护、写小工具、或者整理本地项目,总得把一堆文件打包压缩,再加个时间戳、自动删旧备份——手动点来点去太费劲。其实几行代码就能搞定,这里整理了一份「压缩备份」场景下真正用得上的编程代码大全,覆盖 Windows、macOS 和 Linux,复制粘贴就能跑。
Windows 批处理:每天自动备份并保留最近 7 份
把下面这段保存为 backup.bat,双击或放进计划任务里:
@echo off
setlocal enabledelayedexpansion
set "SRC=D:\myproject"
set "DST=E:\backup"
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%"
set "DATESTAMP=%YY%%MM%%DD%_%HH%%Min%"
7z a -tzip "%DST%\backup_%DATESTAMP%.zip" "%SRC%" -r -x!node_modules -x!.git
cd /d "%DST%"
for /f "skip=7 eol=: delims=" %%F in ('dir /b /o-d backup_*.zip 2^>nul') do del "%%F"注意提前装好 7-Zip,并把 7z.exe 加进系统 PATH,否则会报错。
macOS/Linux Shell 脚本:带校验和的增量压缩包
新建 backup.sh,赋予执行权限:chmod +x backup.sh:
#!/bin/bash
SRC="$HOME/Documents/work"
DST="$HOME/Backups"
DATE=$(date +"%Y%m%d_%H%M")
ZIPFILE="${DST}/work_${DATE}.zip"
mkdir -p "$DST"
zip -r -q "$ZIPFILE" "$SRC" -x "*/__pycache__/*" -x "*/.DS_Store" -x "*/node_modules/*"
sha256sum "$ZIPFILE" > "$ZIPFILE.sha256"
# 清理 30 天前的备份
find "$DST" -name "work_*.zip" -mtime +30 -delete
find "$DST" -name "work_*.zip.sha256" -mtime +30 -delete运行前确认系统已安装 zip(macOS 可用 brew install zip)。
Python 通用版:跨平台、可配置、带日志
适合习惯 Python 的朋友,支持排除路径、自定义压缩等级、记录日志:
import zipfile
import os
import datetime
import logging
logging.basicConfig(filename='backup.log', level=logging.INFO)
def backup_folder(src, dst, exclude=('.git', '__pycache__', 'node_modules')):
now = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')
zip_path = os.path.join(dst, f'backup_{now}.zip')
with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zf:
for root, dirs, files in os.walk(src):
# 过滤排除目录
dirs[:] = [d for d in dirs if d not in exclude]
for file in files:
filepath = os.path.join(root, file)
arcname = os.path.relpath(filepath, src)
zf.write(filepath, arcname)
logging.info(f'✅ 已备份:{zip_path} ({len(zf.filelist)} 个文件)')
# 使用示例
backup_folder('/Users/me/project', '/Users/me/Backups')存成 backup.py,终端执行 python3 backup.py 即可。想定时运行?macOS/Linux 加 crontab,Windows 用任务计划程序触发 Python 命令就行。
这些代码不是“教程范本”,是我在帮朋友修电脑、搭博客、导出客户数据时,反复打磨出来的“能用、不翻车”的压缩备份方案。不用全抄,挑一个顺手的,改两行路径,今晚就能让它替你干活。