import os AUFS_METADATA = u'.wh..wh.' AUFS_WHITEOUT = u'.wh.' AUFS_WHITEOUT_PREFIX_LENGTH = len(AUFS_WHITEOUT) def is_aufs_metadata(absolute): """ Returns whether the given absolute references an AUFS metadata file. """ filename = os.path.basename(absolute) return filename.startswith(AUFS_METADATA) or absolute.startswith(AUFS_METADATA) def get_deleted_filename(absolute): """ Returns the name of the deleted file referenced by the AUFS whiteout file at the given path or None if the file path does not reference a whiteout file. """ filename = os.path.basename(absolute) if not filename.startswith(AUFS_WHITEOUT): return None return filename[AUFS_WHITEOUT_PREFIX_LENGTH:] def get_deleted_prefix(absolute): """ Returns the path prefix of the deleted file referenced by the AUFS whiteout file at the given path or None if the file path does not reference a whiteout file. """ deleted_filename = get_deleted_filename(absolute) if deleted_filename is None: return None dirname = os.path.dirname(absolute) return os.path.join('/', dirname, deleted_filename)[1:]