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:
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.
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