Python自动备份脚本:按日期分类备份指定文件夹及其子文件夹
以下是一个简单的Python程序,用于自动备份指定位置文件,并按日期分类存储备份文件:
import os
import shutil
import time
# 指定要备份的文件夹路径
source_folder = '/path/to/source/folder'
# 指定备份位置的根路径
backup_root = '/path/to/backup/root'
# 生成备份文件夹名称,按照当前日期命名
backup_folder = time.strftime('%Y-%m-%d', time.localtime())
# 拼接备份文件夹路径
backup_path = os.path.join(backup_root, backup_folder)
# 如果备份文件夹不存在,则创建它
if not os.path.exists(backup_path):
os.makedirs(backup_path)
# 备份文件夹和备份位置已准备好,开始备份
for root, dirs, files in os.walk(source_folder):
for file in files:
# 拼接源文件路径和目标文件路径
source_path = os.path.join(root, file)
backup_file = os.path.join(backup_path, file)
# 如果目标文件已存在,则在文件名后面添加数字,避免覆盖原文件
if os.path.exists(backup_file):
i = 1
while True:
new_backup_file = os.path.join(
backup_path,
'{}_{}.{}'.format(os.path.splitext(file)[0], i, os.path.splitext(file)[1])
)
if not os.path.exists(new_backup_file):
backup_file = new_backup_file
break
i += 1
# 复制文件到备份位置
shutil.copy2(source_path, backup_file)
print('备份完成:{}'.format(backup_path))
该程序首先指定了要备份的文件夹路径和备份位置的根路径,然后在程序中生成了备份文件夹名称,按照当前日期命名。接下来,程序使用了os.path.join()方法拼接出备份文件夹的完整路径,并检查该路径是否存在。如果备份文件夹不存在,则使用os.makedirs()方法创建它。
为了备份指定位置文件夹及其子文件夹中的所有文件,程序使用了os.walk()方法遍历源文件夹中的所有文件和子文件夹。对于每个文件,程序使用os.path.join()方法拼接出源文件路径和目标文件路径,并使用shutil.copy2()方法将文件复制到备份位置。如果目标文件已存在,则在文件名后面添加数字,以避免覆盖原文件。
最后,程序输出了备份完成的消息,包含备份文件夹的完整路径。
使用说明:
- 将代码保存为
.py文件。 - 修改
source_folder和backup_root变量的值,分别指定要备份的文件夹路径和备份位置的根路径。 - 运行代码,程序会自动备份指定文件夹及其子文件夹中的所有文件。
代码解释:
os.walk():用于遍历指定文件夹及其子文件夹中的所有文件和子文件夹。os.path.join():用于拼接路径。shutil.copy2():用于复制文件。os.path.exists():用于判断文件或文件夹是否存在。os.makedirs():用于创建文件夹。time.strftime():用于获取当前日期并格式化为字符串。
注意事项:
- 确保备份位置的根路径存在,并且具有写入权限。
- 如果要备份大量文件,建议使用压缩工具,以减小备份文件的大小。
原文地址: https://www.cveoy.top/t/topic/nf03 著作权归作者所有。请勿转载和采集!