1
0
mirror of https://github.com/openeggbert/bit-backup.git synced 2025-03-23 14:42:28 +01:00

2.5 KiB
Raw Blame History

Bit Backup - Documentation

Structure of "Bit Backup" repository

Directory {REPODIR}/objects

SHA-256 hash is used (or an alternative hash, if supported)

objects/{??}/{?????…​}

Directory {REPODIR}/pack

pack/pack-{sha-512}.pack

{sha-256}::::{length in bytes}::::{sha-256}::::{length in bytes}::::{sha-512}::::{length in bytes}::::{sha-512}::::{length in bytes}::::{sha-512}::::{length in bytes}::::::::{bytes -base}{bytes-incremental}{bytes-incremental}{bytes-incremental}{bytes-incremental}{bytes-incremental}

binary diffs

File(s) {REPODIR}/bitbackupindex.{datetime}

Content

Attribute Example Description

PATH

/home/robertvokac

FILE_NAME

doc.txt

TYPE

-

DIR d, REGULAR -, LINK l

LINK_TARGET

a/b/text.txt

The target is in the content of binary object

UID

2

GID

2

OWNER

robertvokac

GROUP

robertvokac

UNIX_PERMISSIONS

rwxrw-r--

ACL

aaa

LAST_MOD_TIME

20220110151617999

LAST_CHANGE_TIME

20220110151617999

LAST_ACCESS_TIME

20220110151617999

SIZE

263

HASH_ALGORITHM

SHA-256

HASH_SUM

{}

ATTRS

aaa

bitbackupinfo

Permission  Symbolic Representation Octal Representation
read    r   4
write   w   2
execute x   1
no permission   -   0
Creates local .bitbackupindex

Downloads remote .bitbackupindex  if does not exist, empty file will be returned.

Compares these indexes, uploads new blobs to object addressed system (SHA-512)  packaged to 7z archives (compression=ultra + other settings)

The most reliable way would be to make md5 hashes of all the local files you care about and store it in a file. So the file will contain a list of filenames and their md5 hashes. Store that file on your ftp server. When you want to update the files on your ftp server, download the file containing the list, compare that against all your local files, and upload the files that have changed (or are new). That way you don't have to worry about archive bits, modified date, or looking at file sizes, the use of which can never be 100% reliable.

Using file sizes isn't reliable for the obvious reason - a file could change but have the same size. I'm not a fan of using the archive bit or modified date because either of those could be confused if you backup or restore your local directory with another backup program.

File(s) {REPODIR}/bitbackupindexinfo.{datetime}

DATE=20231105
TIME=102950
VERSION=1
MESSAGE=
TAG=