Skip to content

--hashfile doesn't like systemd escaped paths #397

Description

@Zugschlus

Hi,

I am trying to run duperemove out of a systemd timer, using a templated unit. Here:

[1/2803]mh@spinturn:~ $ cat /etc/systemd/system/[email protected] 
[Unit]
Description=Deduplicate btrfs/xfs path %I with duperemove (hashfile /var/lib/duperemove/dr-%i.hashes)
Documentation=man:duperemove(1)
ConditionPathExists=/%I
ConditionPathExists=!/run/lock/systemd-duperemove-%i.lock

[Service]
Type=oneshot
ExecStartPre=/usr/bin/touch /run/lock/systemd-duperemove-%i.lock
ExecStart=/usr/bin/duperemove -r -d --hashfile=/var/lib/duperemove/dr-%i.hashes /%I
ExecStopPost=/usr/bin/rm -f /run/lock/systemd-duperemove-%i.lock
[2/2804]mh@spinturn:~ $ 

When I use --hashfile=/var/lib/duperemove/%i.hashes, duperemove aborts with sqlite errors:

 sudo duperemove -r d --hashfile=/var/lib/duperemove/-srv-dak-.hashes //srv/dak/
create_indexes()/8054: Database error 1 while creating database index: SQL logic error
dbfile_prepare()/8054: Database error 1 while creating indexes: SQL logic error
[44/2683]mh@spinturn:~ $ 

When I use a hash file that doesn't have its name start with -, it works.

If that's a bug, then duperemove should accept hash files with file names that begin with -. If it's intended behavior, the error message should be less misleading and the file name restriction should be documented.

Greetings
Marc

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions