README: guard the daily cron scan against an unmounted disk (closes #175)
check / check (push) Canceled after 0s

A disk that is not mounted leaves its mount point an empty directory.
scan then deletes every record under it, and the next scan reads every
file again. The README now says so, and its cron line runs scan only
when mountpoint reports /srv as mounted.

Model: opus-5-5
This commit is contained in:
sneak committed 2026-11-11 03:54:15 +00:00
1 parent 6c529fcc6d
commit d9e0a37b14
2 files changed
+13 -2

No files matched your search

+10 -2
View File
@@ -112,10 +112,18 @@ docker run --rm -v /var/lib/sfdupes:/var/lib/sfdupes sfdupes report > dupes.tsv
Run `scan` as root, so that it can read every file. `scan` warns about a
directory it cannot read, and about a new or changed file it cannot read. It
skips the path and deletes the records at or below it (see "Rules for the
walk"). As the file `/etc/cron.d/sfdupes`:
walk").
A disk that is not mounted leaves an empty directory at its mount point. `scan`
finds no files there, deletes every record under it and exits 0. The next scan
with the disk mounted reads every file on it again. So the line below runs
`scan` only when `mountpoint` reports `/srv` as mounted. Otherwise it prints
`a disk is not mounted; scan of /srv skipped`, which `cron` mails, and scans
nothing. For each other disk mounted below `/srv`, add `&& mountpoint -q` and
its mount point after the first test. As the file `/etc/cron.d/sfdupes`:
```
30 3 * * * root /usr/local/bin/sfdupes scan /srv 2>>/var/log/sfdupes.log || tail -n 3 /var/log/sfdupes.log
30 3 * * * root if mountpoint -q /srv; then /usr/local/bin/sfdupes scan /srv 2>>/var/log/sfdupes.log || tail -n 3 /var/log/sfdupes.log; else echo "a disk is not mounted; scan of /srv skipped"; fi
```
- The first scan creates `/var/lib/sfdupes/db.sqlite` and its directory. To keep
+3
View File
@@ -29,6 +29,9 @@
Newest first. An entry ends with its date and its issue or branch, where those
are known.
- `README.md` says what a disk that is not mounted does to the database. The
daily `cron` line runs `scan` only when `mountpoint` reports `/srv` as mounted
(2026-11-11, https://git.eeqj.de/sneak/sfdupes/issues/175)
- `report` and `trees` leave out empty files. `report` writes no group of size
0, and `trees` writes no group whose trees hold 0 bytes. An empty file still
counts toward a tree's digest (2026-11-11,