功能说明:
这个 Python 程序旨在帮助用户自动化备份指定文件夹中的内容。用户可以设置定时任务,让程序定期(例如每天、每周等)将目标文件夹中的所有文件和子文件夹备份到指定的备份目录,并以日期和时间为文件夹名进行归档。通过这种方式,用户可以轻松管理文件的备份版本,并避免因手动备份失误导致数据丢失。
程序功能的亮点包括:
- 定期备份指定目录。
- 自动创建备份版本目录,并按照日期和时间命名。
- 支持对文件夹和文件的递归复制(包括子目录和文件)。
- 日志记录备份过程。
- 支持命令行参数配置(如备份路径、时间间隔等)。
代码:
import os
import shutil
import time
from datetime import datetime
import logging
# 配置日志
logging.basicConfig(filename='backup.log', level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s')
# 配置常量
SOURCE_DIR = "source" # 需要备份的源文件夹
BACKUP_DIR = "backups" # 备份存放目录
BACKUP_INTERVAL = 3600 # 备份间隔,单位为秒,默认为 3600 秒(即每小时备份一次)
# 获取当前时间,用于创建备份目录
def get_current_time():
return datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
# 创建备份文件夹
def create_backup_directory():
current_time = get_current_time()
backup_folder = os.path.join(BACKUP_DIR, f"backup_{current_time}")
os.makedirs(backup_folder, exist_ok=True)
return backup_folder
# 复制文件夹及其内容
def copy_files(source, destination):
try:
if os.path.isdir(source):
shutil.copytree(source, destination)
logging.info(f"成功备份文件夹: {source} 到 {destination}")
elif os.path.isfile(source):
shutil.copy2(source, destination)
logging.info(f"成功备份文件: {source} 到 {destination}")
else:
logging.warning(f"{source} 不是有效的文件或文件夹")
except Exception as e:
logging.error(f"备份失败: {source} -> {destination},错误: {e}")
# 执行备份操作
def perform_backup():
if not os.path.exists(SOURCE_DIR):
logging.error(f"源文件夹 {SOURCE_DIR} 不存在!")
return
# 创建新的备份目录
backup_folder = create_backup_directory()
# 执行文件夹内容备份
copy_files(SOURCE_DIR, backup_folder)
# 定时备份
def scheduled_backup():
logging.info("定时备份程序启动...")
while True:
perform_backup() # 执行备份
logging.info(f"等待 {BACKUP_INTERVAL} 秒后进行下一次备份...")
time.sleep(BACKUP_INTERVAL) # 等待指定的时间间隔后再进行下一次备份
# 主程序
def main():
scheduled_backup()
# 执行主程序
if __name__ == "__main__":
main()
使用说明:
安装要求:
- Python 3.x 环境。
- 程序使用了 Python 内置的
os
、shutil
、time
和logging
模块,无需安装额外的第三方库。
程序运行:
- 将代码保存为
auto_backup.py
。 在终端(命令行)中运行该程序:
python auto_backup.py
- 将代码保存为
配置项说明:
- SOURCE_DIR:指定需要定期备份的源文件夹路径。例如
source
目录。 - BACKUP_DIR:指定备份文件存放的目标目录。备份将会存放在该目录下,并根据日期和时间生成子目录。
- BACKUP_INTERVAL:指定备份的时间间隔(单位:秒)。默认值为 3600 秒,即每小时备份一次。可以根据需要修改为不同的时间间隔。例如,
BACKUP_INTERVAL = 86400
表示每天备份一次。
- SOURCE_DIR:指定需要定期备份的源文件夹路径。例如
运行效果:
- 程序会定期备份
SOURCE_DIR
目录下的所有文件和子文件夹,并将备份存放在BACKUP_DIR
目录下。备份的文件夹会以时间戳命名,例如backup_2025-04-15_13-30-00
。 - 每次备份完成后,程序会等待指定的时间间隔,然后自动进行下一次备份。
- 程序会定期备份
日志文件:
程序会将备份操作的详细信息记录在
backup.log
文件中,包括每次备份的时间、备份的文件夹路径以及任何发生的错误。日志记录格式如下:2025-04-15 13:30:00 - INFO - 成功备份文件夹: source 到 backups/backup_2025-04-15_13-30-00 2025-04-15 13:30:10 - INFO - 等待 3600 秒后进行下一次备份...
如何停止程序:
- 如果您希望停止备份操作,可以通过终端中的
Ctrl + C
来中断程序执行。
- 如果您希望停止备份操作,可以通过终端中的
备份过程解释:
- 每次备份时,程序首先检查
SOURCE_DIR
是否存在。如果存在,程序将创建一个以当前时间为名字的备份文件夹,并将SOURCE_DIR
中的所有文件和子文件夹复制到备份目录中。 - 在备份过程中,程序会记录每个操作,并在
backup.log
文件中详细记录成功和失败的备份操作。 - 程序会根据
BACKUP_INTERVAL
的值,定期执行备份,直到程序被手动终止。
- 每次备份时,程序首先检查
扩展功能:
- 邮件通知:可以通过配置邮件通知,将备份操作的结果通过邮件发送给用户,便于远程监控备份状态。
- 云备份:程序可以扩展为支持将备份上传到云存储服务(如 AWS S3、Google Drive)中,确保备份数据的安全性。
- 文件排除:用户可以选择排除某些不需要备份的文件或文件夹(如临时文件夹、日志文件等),使备份更加精简。
小结:
这个定时备份工具使用 Python 实现了自动化备份指定目录的功能,支持定时定期执行备份,并通过时间戳对每个备份版本进行归档。用户可以方便地管理备份文件,避免丢失重要数据。程序还提供了日志记录功能,可以帮助用户追踪备份的状态。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。