zip_backup.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import zipfile
  2. import glob
  3. import os.path
  4. from os import path
  5. class zip_backup:
  6. root_dir = ""
  7. ignore = []
  8. backup_list = []
  9. def ignore_list(self):
  10. gitignore = self.root_dir + "\\.gitignore"
  11. if not path.exists(gitignore):
  12. pass
  13. with open(gitignore, "r") as f:
  14. for l in f.readlines():
  15. line = l.strip().replace("/", "\\").lower()
  16. if line[:1] == "*":
  17. if line[-1] == "*":
  18. line = line[1:-1]
  19. else:
  20. line = line[1:] + "\\"
  21. else:
  22. line = "\\" + line + "\\"
  23. self.ignore.append(line)
  24. def ignored(self, filename):
  25. rel_filename = "\\" + filename.replace(self.root_dir, "").lower() + "\\"
  26. for e in self.ignore:
  27. if e in rel_filename:
  28. return True
  29. return False
  30. def check_dir(self, current_dir):
  31. if self.root_dir == "":
  32. self.root_dir = current_dir
  33. self.ignore_list()
  34. for entry in glob.glob(current_dir + "\\*"):
  35. if path.isdir(entry):
  36. self.check_dir(entry)
  37. elif not self.ignored(entry):
  38. self.backup_list.append(entry)
  39. def zip_to_file(self, zip_file):
  40. with zipfile.ZipFile(zip_file, 'w', compression=zipfile.ZIP_DEFLATED, compresslevel=9) as zip:
  41. for e in self.backup_list:
  42. zip.write(e)
  43. z_backup = zip_backup()
  44. z_backup.check_dir("C:\\GAPS_Autosys")
  45. #print(backup_list[:10])
  46. z_backup.zip_to_file("C:\\GAPS_Autosys\\Test.zip")