2013-01-16 11:28:25 +01:00
|
|
|
======
|
|
|
|
bitrot
|
|
|
|
======
|
|
|
|
|
2013-11-11 00:38:05 -08:00
|
|
|
Detects bit rotten files on the hard drive to save your precious photo
|
|
|
|
and music collection from slow decay.
|
2013-01-16 11:28:25 +01:00
|
|
|
|
2013-01-17 15:01:22 +01:00
|
|
|
Usage
|
|
|
|
-----
|
|
|
|
|
|
|
|
Go to the desired directory and simply invoke::
|
|
|
|
|
|
|
|
$ bitrot
|
|
|
|
|
2013-11-11 00:38:05 -08:00
|
|
|
This will start digging through your directory structure recursively
|
|
|
|
indexing all files found. The index is stored in a ``.bitrot.db`` file
|
|
|
|
which is a SQLite 3 database.
|
2013-01-17 15:01:22 +01:00
|
|
|
|
2013-11-11 00:38:05 -08:00
|
|
|
Next time you run ``bitrot`` it will add new files and update the index
|
|
|
|
for files with a changed modification date. Most importantly however, it
|
|
|
|
will report all errors, e.g. files that changed on the hard drive but
|
|
|
|
still have the same modification date.
|
2013-01-17 15:01:22 +01:00
|
|
|
|
2013-11-11 00:38:05 -08:00
|
|
|
All paths stored in ``.bitrot.db`` are relative so it's safe to rescan
|
|
|
|
a folder after moving it to another drive.
|
2013-02-10 19:16:10 +01:00
|
|
|
|
2013-01-17 15:01:22 +01:00
|
|
|
Performance
|
|
|
|
-----------
|
|
|
|
|
2013-11-11 00:38:05 -08:00
|
|
|
Obviously depends on how fast the underlying drive is. No rigorous
|
|
|
|
performance tests have been done. For informational purposes, a typical
|
|
|
|
5400 RPM laptop hard drive scanning a 60+ GB music library takes around
|
|
|
|
15 minutes. On an OCZ Vertex 3 SSD drive ``bitrot`` is able to scan
|
|
|
|
a 100 GB Aperture library in under 10 minutes. Both tests on HFS+.
|
2013-01-17 15:01:22 +01:00
|
|
|
|
2013-01-16 11:28:25 +01:00
|
|
|
Change Log
|
|
|
|
----------
|
|
|
|
|
2016-10-29 19:09:08 -07:00
|
|
|
0.9.1
|
|
|
|
~~~~~
|
|
|
|
|
|
|
|
* bugfix: print the path that failed to decode with FSENCODING
|
|
|
|
|
|
|
|
* bugfix: when using -q, don't hide warnings about files that can't be
|
|
|
|
statted or read
|
|
|
|
|
2016-08-09 14:51:57 -07:00
|
|
|
0.9.0
|
|
|
|
~~~~~
|
|
|
|
|
|
|
|
* bugfix: bitrot.db checksum checking messages now obey --quiet
|
|
|
|
|
|
|
|
* Python 3 compatibility
|
|
|
|
|
2016-05-02 17:49:25 -07:00
|
|
|
0.8.0
|
|
|
|
~~~~~
|
|
|
|
|
|
|
|
* bitrot now keeps track of its own database's bitrot by storing
|
|
|
|
a checksum of .bitrot.db in .bitrot.sha512
|
|
|
|
|
|
|
|
* bugfix: now properly uses the filesystem encoding to decode file names
|
|
|
|
for use with the .bitrotdb database. Report and original patch by
|
|
|
|
pallinger.
|
|
|
|
|
2015-11-02 16:26:21 -08:00
|
|
|
0.7.1
|
|
|
|
~~~~~
|
|
|
|
|
|
|
|
* bugfix: SHA1 computation now works correctly on Windows; previously
|
|
|
|
opened files in text-mode. This fix will change hashes of files
|
|
|
|
containing some specific bytes like 0x1A.
|
|
|
|
|
2015-06-22 18:08:26 -07:00
|
|
|
0.7.0
|
|
|
|
~~~~~
|
|
|
|
|
|
|
|
* when a file changes or is renamed, the timestamp of the last check is
|
|
|
|
updated, too
|
|
|
|
|
|
|
|
* bugfix: files that disappeared during the run are now properly ignored
|
|
|
|
|
|
|
|
* bugfix: files that are locked or with otherwise denied access are
|
|
|
|
skipped. If they were read before, they will be considered "missing"
|
|
|
|
in the report.
|
|
|
|
|
|
|
|
* bugfix: if there are multiple files with the same content in the
|
|
|
|
scanned directory tree, renames are now handled properly for them
|
|
|
|
|
|
|
|
* refactored some horrible code to be a little less horrible
|
|
|
|
|
2013-10-27 06:45:25 +01:00
|
|
|
0.6.0
|
2013-03-27 17:19:38 +01:00
|
|
|
~~~~~
|
|
|
|
|
2013-10-27 06:45:25 +01:00
|
|
|
* more control over performance with ``--commit-interval`` and
|
|
|
|
``--chunk-size`` command-line arguments
|
|
|
|
|
2013-11-11 00:38:05 -08:00
|
|
|
* bugfix: symbolic links are now properly skipped (or can be followed if
|
|
|
|
``--follow-links`` is passed)
|
|
|
|
|
|
|
|
* bugfix: files that cannot be opened are now gracefully skipped
|
2013-03-27 17:19:38 +01:00
|
|
|
|
2013-10-27 06:45:25 +01:00
|
|
|
* bugfix: fixed a rare division by zero when run in an empty directory
|
|
|
|
|
2013-03-15 23:32:14 +01:00
|
|
|
0.5.1
|
|
|
|
~~~~~
|
|
|
|
|
|
|
|
* bugfix: warn about test mode only in test mode
|
|
|
|
|
2013-03-15 17:12:04 +01:00
|
|
|
0.5.0
|
2013-03-04 09:37:09 +01:00
|
|
|
~~~~~
|
|
|
|
|
2013-11-11 00:38:05 -08:00
|
|
|
* ``--test`` command-line argument for testing the state without
|
|
|
|
updating the database on disk (works for testing databases you don't
|
|
|
|
have write access to)
|
2013-03-15 17:12:04 +01:00
|
|
|
|
2013-03-04 09:37:09 +01:00
|
|
|
* size of the data read is reported upon finish
|
|
|
|
|
|
|
|
* minor performance updates
|
|
|
|
|
2013-03-04 00:49:42 +01:00
|
|
|
0.4.0
|
|
|
|
~~~~~
|
|
|
|
|
|
|
|
* renames are now reported as such
|
|
|
|
|
2013-11-11 00:38:05 -08:00
|
|
|
* all non-regular files (e.g. symbolic links, pipes, sockets) are now
|
|
|
|
skipped
|
2013-03-04 00:49:42 +01:00
|
|
|
|
|
|
|
* progress presented in percentage
|
|
|
|
|
2013-02-26 15:44:51 +01:00
|
|
|
0.3.0
|
|
|
|
~~~~~
|
|
|
|
|
2013-11-11 00:38:05 -08:00
|
|
|
* ``--sum`` command-line argument for easy comparison of multiple
|
|
|
|
databases
|
2013-02-26 15:44:51 +01:00
|
|
|
|
2013-02-12 09:57:58 +01:00
|
|
|
0.2.1
|
|
|
|
~~~~~
|
|
|
|
|
2013-11-11 00:38:05 -08:00
|
|
|
* fixed regression from 0.2.0 where new files caused a ``KeyError``
|
|
|
|
exception
|
2013-02-12 09:57:58 +01:00
|
|
|
|
2013-02-10 19:16:10 +01:00
|
|
|
0.2.0
|
|
|
|
~~~~~
|
|
|
|
|
|
|
|
* ``--verbose`` and ``--quiet`` command-line arguments
|
|
|
|
|
|
|
|
* if a file is no longer there, its entry is removed from the database
|
|
|
|
|
2013-01-17 15:01:22 +01:00
|
|
|
0.1.0
|
|
|
|
~~~~~
|
|
|
|
|
|
|
|
* First published version.
|
2013-01-16 11:28:25 +01:00
|
|
|
|
|
|
|
Authors
|
|
|
|
-------
|
|
|
|
|
2013-10-27 06:45:25 +01:00
|
|
|
Glued together by `Łukasz Langa <mailto:lukasz@langa.pl>`_. Multiple
|
2016-07-14 08:28:20 -06:00
|
|
|
improvements by `Yang Zhang <mailto:yaaang@gmail.com>`_, `Jean-Louis
|
|
|
|
Fuchs <mailto:ganwell@fangorn.ch>`_ and `Phil Lundrigan <mailto:philipbl@cs.utah.edu>`_.
|