MCPcopy
hub / github.com/borgbackup/borg / check

Method check

src/borg/archive.py:1744–1811  ·  view source on GitHub ↗

Perform a set of checks on 'repository' :param repair: enable repair mode, write updated or corrected data into repository :param find_lost_archives: create archive directory entries that are missing :param first/last/sort_by: only check this number of first/last archives or

(
        self,
        repository,
        *,
        verify_data=False,
        repair=False,
        find_lost_archives=False,
        match=None,
        sort_by="",
        first=0,
        last=0,
        older=None,
        newer=None,
        oldest=None,
        newest=None,
    )

Source from the content-addressed store, hash-verified

1742 self.key = None
1743
1744 def check(
1745 self,
1746 repository,
1747 *,
1748 verify_data=False,
1749 repair=False,
1750 find_lost_archives=False,
1751 match=None,
1752 sort_by="",
1753 first=0,
1754 last=0,
1755 older=None,
1756 newer=None,
1757 oldest=None,
1758 newest=None,
1759 ):
1760 """Perform a set of checks on 'repository'
1761
1762 :param repair: enable repair mode, write updated or corrected data into repository
1763 :param find_lost_archives: create archive directory entries that are missing
1764 :param first/last/sort_by: only check this number of first/last archives ordered by sort_by
1765 :param match: only check archives matching this pattern
1766 :param older/newer: only check archives older/newer than timedelta from now
1767 :param oldest/newest: only check archives older/newer than timedelta from oldest/newest archive timestamp
1768 :param verify_data: integrity verification of data referenced by archives
1769 """
1770 if not isinstance(repository, (Repository, RemoteRepository)):
1771 logger.error("Checking legacy repositories is not supported.")
1772 return False
1773 logger.info("Starting archive consistency check...")
1774 self.check_all = not any((first, last, match, older, newer, oldest, newest))
1775 self.repair = repair
1776 self.repository = repository
1777 # Repository.check already did a full repository-level check and has built and cached a fresh chunkindex -
1778 # we can use that here, so we don't disable the caches (also no need to cache immediately, again):
1779 self.chunks = build_chunkindex_from_repo(self.repository, disable_caches=False, cache_immediately=False)
1780 if self.key is None:
1781 self.key = self.make_key(repository)
1782 self.repo_objs = RepoObj(self.key)
1783 if verify_data:
1784 self.verify_data()
1785 rebuild_manifest = False
1786 try:
1787 repository.get_manifest()
1788 except NoManifestError:
1789 logger.error("Repository manifest is missing.")
1790 self.error_found = True
1791 rebuild_manifest = True
1792 else:
1793 try:
1794 self.manifest = Manifest.load(repository, (Manifest.Operation.CHECK,), key=self.key)
1795 except IntegrityErrorBase as exc:
1796 logger.error("Repository manifest is corrupted: %s", exc)
1797 self.error_found = True
1798 rebuild_manifest = True
1799 if rebuild_manifest:
1800 self.manifest = self.rebuild_manifest()
1801 if find_lost_archives:

Callers 1

do_checkMethod · 0.95

Calls 12

make_keyMethod · 0.95
verify_dataMethod · 0.95
rebuild_manifestMethod · 0.95
rebuild_archivesMethod · 0.95
finishMethod · 0.95
RepoObjClass · 0.85
errorMethod · 0.80
infoMethod · 0.45
get_manifestMethod · 0.45
loadMethod · 0.45

Tested by

no test coverage detected