每逢节假日,公司要求备份一次源码到共享目录。于是写了一个脚本,用来自动备份。
工作原理:
1.使用python的os.walk方法,遍历需要备份的目录文件。
2.使用python的zipfile模块,将文件夹打包成zip压缩包。
import zipfile
import os
from datetime import datetime
# 压缩文件夹到指定路径
def compress_directory(directory_path, output_path):
with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
for root, dirs, files in os.walk(directory_path):
for file in files:
file_path = os.path.join(root, file)
if file_path.find(".git") > -1:
zipf.write(file_path, arcname=os.path.relpath(
file_path, directory_path))
if __name__ == '__main__':
# 源码目录
dirPath = "E:\\Git"
# 备份目录(存放压缩文件)
toPath = '\\\\192.168.*.*\\源码备份\\2024-04-03\\'
if not os.path.exists(toPath):
os.makedirs(toPath)
dirs = {}
for file in os.listdir(dirPath):
file_path = os.path.join(dirPath, file)
# 条件筛选
if os.path.isdir(file_path) and file_path.find("[自定义过滤条件]") > -1:
dirs[file] = file_path
print("开始备份源码,共"+str(len(dirs))+"个目录")
i = 0
for key, val in dirs.items():
i = i+1
print(datetime.now().strftime("%Y-%m-%d %H:%M:%S") +" 正在备份("+str(i)+"/"+str(len(dirs)) + "):"+val)
compress_directory(val, os.path.join(toPath, key+".zip"))
print(datetime.now().strftime("%Y-%m-%d %H:%M:%S") +" 备份完毕("+str(i)+"/"+str(len(dirs)) + "):"+val)
注意,请将文中的 dirPath、toPath 替换为你实际的路径,路径"\"需转义"\\"。
# 源码目录
dirPath = "E:\\Git"
# 备份目录(存放压缩文件)
toPath = '\\\\192.168.*.*\\源码备份\\2024-04-03\\'
#[自定义过滤条件] 可以设置过滤规则。
948

被折叠的 条评论
为什么被折叠?



