add borg recovery details
This commit is contained in:
parent
14176fed58
commit
c590ff251a
1 changed files with 97 additions and 0 deletions
97
RECOVERY.md
Normal file
97
RECOVERY.md
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
# Forgejo Repository Recovery
|
||||
|
||||
This is the minimal recovery path for getting source code back from the
|
||||
BorgBase backup. It does not rebuild the full server; it extracts Forgejo's
|
||||
bare Git repositories so they can be cloned locally.
|
||||
|
||||
## Requirements
|
||||
|
||||
- BorgBase repo URL:
|
||||
`ssh://n5lniyfd@n5lniyfd.repo.borgbase.com/./repo`
|
||||
- Decrypted Borg SSH private key from the flash drive
|
||||
- Borg repository passphrase from the flash drive
|
||||
- A machine with `borg`, `git`, and `ssh`
|
||||
|
||||
This only recovers repositories that were pushed to Forgejo before the selected
|
||||
Borg backup ran.
|
||||
|
||||
## Recovery
|
||||
|
||||
Install the needed tools. On NixOS or another machine with Nix:
|
||||
|
||||
```sh
|
||||
nix-shell -p borgbackup git openssh
|
||||
```
|
||||
|
||||
Prepare a working directory and copy in the Borg SSH key:
|
||||
|
||||
```sh
|
||||
mkdir -p ~/borg-recovery
|
||||
cp /path/to/flash/borg-private-key ~/borg-recovery/borg-private-key
|
||||
chmod 600 ~/borg-recovery/borg-private-key
|
||||
```
|
||||
|
||||
Set the Borg connection environment:
|
||||
|
||||
```sh
|
||||
export BORG_REPO='ssh://n5lniyfd@n5lniyfd.repo.borgbase.com/./repo'
|
||||
export BORG_RSH='ssh -i ~/borg-recovery/borg-private-key -o IdentitiesOnly=yes -o StrictHostKeyChecking=accept-new'
|
||||
```
|
||||
|
||||
Read the Borg passphrase without showing it on screen:
|
||||
|
||||
```sh
|
||||
read -rsp 'Borg passphrase: ' BORG_PASSPHRASE
|
||||
export BORG_PASSPHRASE
|
||||
echo
|
||||
```
|
||||
|
||||
List available archives:
|
||||
|
||||
```sh
|
||||
borg list
|
||||
```
|
||||
|
||||
Choose an archive name from the list, then extract only Forgejo's Git
|
||||
repositories:
|
||||
|
||||
```sh
|
||||
mkdir -p ~/borg-recovery/extract
|
||||
cd ~/borg-recovery/extract
|
||||
|
||||
borg extract ::ARCHIVE_NAME var/lib/forgejo/repositories
|
||||
```
|
||||
|
||||
Find the extracted bare repositories:
|
||||
|
||||
```sh
|
||||
find ~/borg-recovery/extract/var/lib/forgejo/repositories -maxdepth 3 -name '*.git'
|
||||
```
|
||||
|
||||
Clone the repository you need:
|
||||
|
||||
```sh
|
||||
git clone ~/borg-recovery/extract/var/lib/forgejo/repositories/OWNER/REPO.git
|
||||
```
|
||||
|
||||
Example:
|
||||
|
||||
```sh
|
||||
git clone ~/borg-recovery/extract/var/lib/forgejo/repositories/yisroel/home-server-config.git
|
||||
```
|
||||
|
||||
## About the Passphrase Command
|
||||
|
||||
This command:
|
||||
|
||||
```sh
|
||||
read -rsp 'Borg passphrase: ' BORG_PASSPHRASE
|
||||
```
|
||||
|
||||
reads the passphrase into the `BORG_PASSPHRASE` shell variable.
|
||||
|
||||
- `-r` reads the text literally.
|
||||
- `-s` hides what you type.
|
||||
- `-p` shows the prompt.
|
||||
|
||||
Then `export BORG_PASSPHRASE` makes the variable available to `borg`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue