bit-backup/README.md
2023-09-28 19:22:47 +02:00

237 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# bit-inspector
"Bit Inspector" (Bir) is a tool to manage files.
## Requirements to run "Bit Inspector"
Requirements to run "Bit Inspector":
* Java 19
## How to build "Bit Inspector" on your own
Requirements to build "Bit Inspector:
* Java 19
* Maven
```
git clone https://code.nanoboot.org/nanoboot/bit-inspector
cd bit-inspector
mvn clean install
```
## How to setup your environment on Linux
Add to your .bashrc:
alias bir='java -jar {path to bit-inspector jar with dependencies file}/bit-inspector-0.0.0-SNAPSHOT-jar-with-dependencies.jar'
## Features
### Feature 1 : Bit Rot Detection (to keep your files forever)
* Hash sum of files is tracked.
* If last modification date of file in database and on the disk are the same, but the calculated checksum is different, then a bit rot was detected.
* New files are added to the database, deleted files are removed from the database.
Found bit rots can be probably repaired, but only in case, you use also "Feature 2 : Backup of files"
Inspired by:
* https://github.com/ambv/bitrot
* https://github.com/laktak/chkbit-py
#### File .birignore
You can create file .birignore containing the names of the files/directories you wish to ignore
* each line should contain exactly one name
* lines starting with # are skipped
* you may use Unix shell-style wildcards
#### File .bir.sqlite3
An SQLite database
#### File .bir.sqlite3.sha512
Last calculated hash sum of file ".bir.sqlite3"
### Feature 2 : Backup of files
Inspired by Git, but goals are slightly different.
* https://github.com/joshnh/Git-Commands
* https://git-scm.com/docs
#### File .birbackup
remotes=remote1,remote2,remote3
#### Features
* Backing up directory to another location like: local, FTP(S), SFTP, HTTP(S), S3, Bir server and others
* Optionally you can set a password to protect your files (if a not trusted external location like FTP or S3 is used)
* Files are handled in a "Bir repository"
#### What is not supported
* Conflict resolution is not supported. (If you wish something not yet supported to be added, please, let's start a discussion here or at forum.nanoboot.org)
* "Bir" is not intended to be used by many read/write users.
* Several people changing one Bir repository must be avoided.
* "Bir" is not intended to be used by many read users and only one read/write user.
* One Bir repository can be used by more users, but only one user can change it.
* Branches are not supported
## Bir repository
* Your files are versioned. You can travel in history and return to an older version of the whole repo or only a changed/deleted directory or file.
You can:
* clone a remote Bir repository
* or use an existing local Bir repository
* or create a new empty Bir repository
* or create a new Bir repository using an existing directory
* or save your local repository to a remote repository.
### Structure
#### Directory .bir/objects
.bir/objects/{??}/{?????...}
#### Directory .bir/pack
.bir/pack/pack-{sha-512}.pack
#### File .bir/birindex.{number}
#### File .bir/birlog
Contains index number of last bir index.
#### file .bir/description
#### File .bir/config
```
pack-file.files-until-size.mb=100
pack-file.max-size.mb=1000
```
## Commands
bir {command} [{arg1} {arg2} {argn}]
Example:
```
bir clone path=/home/johndoe/mydir url={local path or s3 bucket or FTP server or website url}
```
Arguments
path={path to directory}
* default:. (current working directory)
### bitrot
Checks for bitrots in current directory
### clone : Cloning a remote repo
```
bir clone {url} [[--bare
```
#### Local
```
bir clone {path to another local Bir repository - path to directory}
```
#### S3
```
bir clone s3://http[s]://{endpoint url}/{bucket name}
```
Then you will be asked for access key and secret key.
#### FTP/FTPS/SFTP
```
bir clone {protocol}://[{user}:{password}]@{host url}:{port}/{directory}
```
#### HTTP/HTTPS
```
bir clone http[s]://[{user}:{password}]@{host url}:{port}/{directory}
```
#### Bir server (via Rest api)
```
bir clone bir:://[{user}:{password}]@{host url}:{port}/[path to repository/]{repository name}
```
### init
Init commands creates new directory .bir with its structure
```
bir init
```
* Creating a new empty Bir repository
* Creating a Bir repository using an existing directory
### help
### version
### config
### restore
### reset
### tag
### revert
### blame
### clean
### gc
### fsck
### check
### bundle
### remote add {remote name}
```
bir remote add {remote name}
```
### bir commit
```
bir commit [-m "{message}"]
```
### bir push {remote name}
### bir fetch
### bir pull
### bir log
### bir diff
### bir prune
bir prune origin --since 2021-10-04
## Todo
Table FILE add new columns linux_rights, owner, group