# Gickup

## Getting started

Gickup is a tool that allows you to clone/mirror repositories from one hoster to another. This is useful if you want to have a backup of your repositories on another hoster or to a local server.

### References

<ReferenceLinks references={frontmatter.references} />

---

1.  ## Download tarball

        ```sh wrap preserveIndent
        wget https://github.com/stefanprodan/gickup/releases/download/v0.10.39/gickup_0.10.39_linux_amd64.tar.gz
        ```

2.  ## Verify checksum

        ```sh wrap preserveIndent
        echo "c3d3e647189c4379d8d70b9223bd4fe5eb293b289ece5931ff2e10064b063a67  gickup_0.10.39_linux_amd64.tar.gz" | sha256sum -c -
        ```

3.  ## Extract and move

        ```sh wrap preserveIndent
        tar -xzf gickup_0.10.39_linux_amd64.tar.gz && sudo mv gickup /usr/local/bin/gickup
        ```

4.  ## Make executeable

        ```sh wrap preserveIndent
        sudo chmod +x /usr/local/bin/gickup
        ```

5.  ## Create backup/config directory

        ```sh wrap preserveIndent
        mkdir -p ~/.config/gickup
        ```

6.  ## Create token(s)

        **GitHub token**

                        Requires these permissions:

                        - `all:repo` - Full control of public and private repositories.
                        - `read:gist` - Read user gists.
                        - `read:org` - (Optional) Read-only access to organization membership and repos.

                **GitHub token**

                        Requires these permissions:

                        - `all:repo` - Full control of public and private repositories.
                        - `read:gist` - Read user gists.
                        - `read:org` - (Optional) Read-only access to organization membership and repos.

                        **Gitea token**

                        Requires these permissions:

                        - `write:org` - Read/write access to organization membership and repos.
                        - `write:repo` - Full control of public and private repositories.
                        - `write:user` - Read/write access to user.

                

7.  ## Create config

        ```sh
                        nano ~/.config/gickup/local.config.yaml
                        ```

                        ```yml title="local.config.yaml"
                        localYaml
                        ```

                ```sh
                        nano ~/.config/gickup/gitea.config.yaml
                        ```

                        ```yml title="gitea.config.yaml"
                        giteaYaml
                        ```

                

8.  ## Run

        ```sh
                        gickup ~/.config/gickup/local.config.yaml
                        ```

                ```sh
                        gickup ~/.config/gickup/gitea.config.yaml
                        ```
