# bgit **Repository Path**: oschina/bgit ## Basic Information - **Project Name**: bgit - **Description**: bgit 是一个批量拉取 git 仓库的工具。当前支持 gitee(准备中) 和 github 两个平台。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 10 - **Created**: 2018-10-30 - **Last Updated**: 2025-04-29 ## Categories & Tags **Categories**: vcs **Tags**: None ## README ============= github-backup ============= |PyPI| |Python Versions| This project is considered feature complete for the primary maintainer. If you would like a bugfix or enhancement and cannot sponsor the work, pull requests are welcome. Feel free to contact the maintainer for consulting estimates if desired. backup a github user or organization Requirements ============ - GIT 1.9+ Installation ============ Using PIP via PyPI:: pip install github-backup Using PIP via Github:: pip install git+https://github.com/josegonzalez/python-github-backup.git#egg=github-backup Usage ===== CLI Usage is as follows:: github-backup [-h] [-u USERNAME] [-p PASSWORD] [-t TOKEN] [--as-app] [-o OUTPUT_DIRECTORY] [-i] [--starred] [--all-starred] [--watched] [--followers] [--following] [--all] [--issues] [--issue-comments] [--issue-events] [--pulls] [--pull-comments] [--pull-commits] [--pull-details] [--labels] [--hooks] [--milestones] [--repositories] [--bare] [--lfs] [--wikis] [--gists] [--starred-gists] [--skip-existing] [-L [LANGUAGES [LANGUAGES ...]]] [-N NAME_REGEX] [-H GITHUB_HOST] [-O] [-R REPOSITORY] [-P] [-F] [--prefer-ssh] [-v] [--keychain-name OSX_KEYCHAIN_ITEM_NAME] [--keychain-account OSX_KEYCHAIN_ITEM_ACCOUNT] [--releases] [--assets] [--throttle-limit THROTTLE_LIMIT] [--throttle-pause THROTTLE_PAUSE] USER Backup a github account positional arguments: USER github username optional arguments: -h, --help show this help message and exit -u USERNAME, --username USERNAME username for basic auth -p PASSWORD, --password PASSWORD password for basic auth. If a username is given but not a password, the password will be prompted for. -t TOKEN, --token TOKEN personal access, OAuth, or JSON Web token, or path to token (file://...) --as-app authenticate as github app instead of as a user. -o OUTPUT_DIRECTORY, --output-directory OUTPUT_DIRECTORY directory at which to backup the repositories -i, --incremental incremental backup --starred include JSON output of starred repositories in backup --all-starred include starred repositories in backup [*] --watched include JSON output of watched repositories in backup --followers include JSON output of followers in backup --following include JSON output of following users in backup --all include everything in backup (not including [*]) --issues include issues in backup --issue-comments include issue comments in backup --issue-events include issue events in backup --pulls include pull requests in backup --pull-comments include pull request review comments in backup --pull-commits include pull request commits in backup --pull-details include more pull request details in backup [*] --labels include labels in backup --hooks include hooks in backup (works only when authenticated) --milestones include milestones in backup --repositories include repository clone in backup --bare clone bare repositories --lfs clone LFS repositories (requires Git LFS to be installed, https://git-lfs.github.com) [*] --wikis include wiki clone in backup --gists include gists in backup [*] --starred-gists include starred gists in backup [*] --skip-existing skip project if a backup directory exists -L [LANGUAGES [LANGUAGES ...]], --languages [LANGUAGES [LANGUAGES ...]] only allow these languages -N NAME_REGEX, --name-regex NAME_REGEX python regex to match names against -H GITHUB_HOST, --github-host GITHUB_HOST GitHub Enterprise hostname -O, --organization whether or not this is an organization user -R REPOSITORY, --repository REPOSITORY name of repository to limit backup to -P, --private include private repositories [*] -F, --fork include forked repositories [*] --prefer-ssh Clone repositories using SSH instead of HTTPS -v, --version show program's version number and exit --keychain-name OSX_KEYCHAIN_ITEM_NAME OSX ONLY: name field of password item in OSX keychain that holds the personal access or OAuth token --keychain-account OSX_KEYCHAIN_ITEM_ACCOUNT OSX ONLY: account field of password item in OSX keychain that holds the personal access or OAuth token --releases include release information, not including assets or binaries --assets include assets alongside release information; only applies if including releases --throttle-limit THROTTLE_LIMIT start throttling of GitHub API requests after this amount of API requests remain --throttle-pause THROTTLE_PAUSE wait this amount of seconds when API request throttling is active (default: 30.0, requires --throttle-limit to be set) The package can be used to backup an *entire* organization or repository, including issues and wikis in the most appropriate format (clones for wikis, json files for issues). Authentication ============== Note: Password-based authentication will fail if you have two-factor authentication enabled. Using the Keychain on Mac OSX ============================= Note: On Mac OSX the token can be stored securely in the user's keychain. To do this: 1. Open Keychain from "Applications -> Utilities -> Keychain Access" 2. Add a new password item using "File -> New Password Item" 3. Enter a name in the "Keychain Item Name" box. You must provide this name to github-backup using the --keychain-name argument. 4. Enter an account name in the "Account Name" box, enter your Github username as set above. You must provide this name to github-backup using the --keychain-account argument. 5. Enter your Github personal access token in the "Password" box Note: When you run github-backup, you will be asked whether you want to allow "security" to use your confidential information stored in your keychain. You have two options: 1. **Allow:** In this case you will need to click "Allow" each time you run `github-backup` 2. **Always Allow:** In this case, you will not be asked for permission when you run `github-backup` in future. This is less secure, but is required if you want to schedule `github-backup` to run automatically About Git LFS ============= When you use the "--lfs" option, you will need to make sure you have Git LFS installed. Instructions on how to do this can be found on https://git-lfs.github.com. Examples ======== Backup all repositories, including private ones:: export ACCESS_TOKEN=SOME-GITHUB-TOKEN github-backup WhiteHouse --token $ACCESS_TOKEN --organization --output-directory /tmp/white-house --repositories --private Backup a single organization repository with everything else (wiki, pull requests, comments, issues etc):: export ACCESS_TOKEN=SOME-GITHUB-TOKEN ORGANIZATION=docker REPO=cli # e.g. git@github.com:docker/cli.git github-backup $ORGANIZATION -P -t $ACCESS_TOKEN -o . --all -O -R $REPO Testing ======= This project currently contains no unit tests. To run linting:: pip install flake8 flake8 --ignore=E501 .. |PyPI| image:: https://img.shields.io/pypi/v/github-backup.svg :target: https://pypi.python.org/pypi/github-backup/ .. |Python Versions| image:: https://img.shields.io/pypi/pyversions/github-backup.svg :target: https://github.com/josegonzalez/python-github-backup