snapshot.py 877 B

1234567891011121314151617181920212223
  1. import pathlib
  2. IS_A_HOOK = False
  3. def get_contained_directories(parent_directory, candidate_contained_directories):
  4. '''
  5. Given a parent directory and a sequence of candiate directories potentially inside it, get the
  6. subset of contained directories for which the parent directory is actually the parent, a
  7. grandparent, the very same directory, etc. The idea is if, say, /var/log and /var/lib are
  8. candidate contained directories, but there's a parent directory (logical volume, dataset,
  9. subvolume, etc.) at /var, then /var is what we want to snapshot.
  10. '''
  11. if not candidate_contained_directories:
  12. return ()
  13. return tuple(
  14. candidate
  15. for candidate in candidate_contained_directories
  16. if parent_directory == candidate
  17. or pathlib.PurePosixPath(parent_directory) in pathlib.PurePath(candidate).parents
  18. )