https://github.com/asmuth/integritycheck
Yet another file integrity monitoring tool
https://github.com/asmuth/integritycheck
Last synced: about 1 year ago
JSON representation
Yet another file integrity monitoring tool
- Host: GitHub
- URL: https://github.com/asmuth/integritycheck
- Owner: asmuth
- License: other
- Created: 2018-04-02T15:10:17.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2024-04-01T11:03:22.000Z (about 2 years ago)
- Last Synced: 2025-05-08T03:08:46.190Z (about 1 year ago)
- Language: Rust
- Homepage: https://fhistory.org
- Size: 160 KB
- Stars: 7
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
integritycheck
==============
This is a little utility program I use to check the integrity of my important
data. The binary is called `ic` because I invoke it frequently and it is much
easier to type than 'integritycheck'.
The user interface of `ic` is somewhat similar to version control systems
like `git` or `svn`. Like most version control systems, ic works on a "repository".
In ic's case, the repository is just any directory on your disk that contains the data
you want to monitor. Note that ic will never touch any of the files in the
repository - it is a read-only tool with regards to your data directory.
The command line interface should also be intuitive to use if you have used a
version control system before: There is a `status` command that displays any
unacknowledged modifications to the repository, an `ack` command that you can use
to acknowledge changes in the repository (this is the equivalent to svn or git's
`commit`) and a `log` command that displays the history of changes to the
repository.
However, unlike a version control system, ic does not actually store any copies
of your data! It merely stores an index containing the checksums of all files
as well as some other metadata. This means that it can only check the integrity
of your data and tell you if any of the files are corrupted or missing. Now, in
case there *are* corrupted or missing files, ic is *not* able to restore them on
its own; you have to retrieve them from your backup manually.
The upside of this approach is that it allows you to use ic in addition to your
existing backup or version control system. It also allows ic to handle very large
repositories, such as a photo collection or a library of gamedev assets.
Build & Installation
--------------------
Before you can compile `ic`, you have to install the rust compiler and the
cargo package manager.
To build `ic`, check out this repo and run:
$ make
To install the `ic` binary into your system, execute this command:
$ make install
If you have modified the source code, run the test suite:
$ make test
Usage
-----
usage: ic [options]
Yet another file integrity monitoring tool.
global options:
-d,--data_dir=PATH Set the path of the repository/data directory
default: '.'
-x,--index_dir=PATH Set the path of the index directory. Note that this
path is relative to the data directory. Absolute
paths are allowed. default: '.fh'
--progress=[on/off] Turn progress reporting on stderr on or off
--colours=[on/off] Turn coloured terminal output on or off. default: on
-v,--verbose Enable verbose output,
-h,--help Print this help message and exit
commands:
init Create a new index file.
status Compare the current state of the repository to the latest snapshot
ack Acknowledge changes to files in the repository and create a new snapshot
log Display a historical log of snapshots and changes to the repository
verify Perform a full check of the repository's integrity
version Print the version of this program and exit
help Print the help message for one of the commands and exit
License
-------
Copyright 2018 Paul Asmuth
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.