Automating File Backups
Backup strategy (simple and effective)
- choose what to back up
- create timestamped archives
- store backups in a separate location
Zip a folder
backup_zip.py
from __future__ import annotations
from datetime import datetime
from pathlib import Path
import shutil
def backup_folder(folder: Path, out_dir: Path) -> Path:
folder = folder.resolve()
out_dir.mkdir(parents=True, exist_ok=True)
stamp = datetime.now().strftime("%Y%m%d_%H%M%S")
archive_base = out_dir / f"{folder.name}_{stamp}"
# creates archive_base.zip
archive_path = shutil.make_archive(str(archive_base), "zip", root_dir=str(folder))
return Path(archive_path)
p = backup_folder(Path("./demo"), Path("./backups"))
print("created", p)backup_zip.py
from __future__ import annotations
from datetime import datetime
from pathlib import Path
import shutil
def backup_folder(folder: Path, out_dir: Path) -> Path:
folder = folder.resolve()
out_dir.mkdir(parents=True, exist_ok=True)
stamp = datetime.now().strftime("%Y%m%d_%H%M%S")
archive_base = out_dir / f"{folder.name}_{stamp}"
# creates archive_base.zip
archive_path = shutil.make_archive(str(archive_base), "zip", root_dir=str(folder))
return Path(archive_path)
p = backup_folder(Path("./demo"), Path("./backups"))
print("created", p)Tips
- keep multiple backups
- test restore occasionally
- donβt back up into the same folder youβre archiving
π§ͺ Try It Yourself
Exercise 1 β List Files with os.listdir
Exercise 2 β Join Paths with os.path.join
Exercise 3 β Write and Read a File
If this helped you, consider buying me a coffee β
Buy me a coffeeWas this page helpful?
Let us know how we did
