Compare commits

..
Author SHA1 Message Date
clawbot e35b260596 Leave empty files out of report and trees (closes #178)
check / check (push) Successful in 4m48s
Removing an empty file frees nothing, yet every `.gitkeep`,
`__init__.py` and empty log formed one `report` group, and directories
holding only empty files were reported as 0-byte duplicate trees. Now
`report` writes no group of size 0 and `trees` writes no group whose
trees hold 0 bytes. An empty file still counts toward the digest of a
tree that holds other files. No option, as approved on the issue. The
README's definition-of-done test now expects `empty1` and `empty2`
nowhere.

Model: opus-5-5
2026-11-11 02:29:45 +00:00
2 changed files with 2 additions and 13 deletions

No files matched your search

+2 -10
View File
@@ -112,18 +112,10 @@ 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").
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`:
walk"). As the file `/etc/cron.d/sfdupes`:
```
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
30 3 * * * root /usr/local/bin/sfdupes scan /srv 2>>/var/log/sfdupes.log || tail -n 3 /var/log/sfdupes.log
```
- The first scan creates `/var/lib/sfdupes/db.sqlite` and its directory. To keep
-3
View File
@@ -29,9 +29,6 @@
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,