在 systemd 服务中使用 find 会导致错误:“路径必须在表达式之前”

在 systemd 服务中使用 find 会导致错误:“路径必须在表达式之前”

我正在尝试在备份运行之前创建一个排除文件。使用这个简单的find命令会产生正确的输出,但在systemd服务中使用时会失败。我认为是因为find转义。

有没有可以替代 V 形线或管道线的方法?或者有正确的转义字符的方法?谢谢

错误:find[20029]: /usr/bin/find: paths must precede expression:>'

我的服务:

[Unit]
Description=Restic backup service
[Service]
Type=oneshot
ExecStartPre=/usr/bin/find /home/jake/finished/ -size +1G > /etc/restic/exclude_large.lst
ExecStart=/usr/bin/restic backup --verbose --one-file-system --tag systemd.timer $BACKUP_EXCLUDES $BACKUP_PATHS
ExecStartPost=/usr/bin/restic forget --verbose --tag systemd.timer --group-by "paths,tags" --keep-daily $RETENTION_DAYS --keep-weekly $RETENTION_WEEKS --keep-monthly $RETENTION_MONTHS --keep-yearly $RETENTION_YEARS
EnvironmentFile=/etc/restic/restic-backup.conf

答案1

我认为我已经通过以下方法解决了这个问题:

ExecStartPre=/bin/bash -c '/usr/bin/find /home/jake/finished/ -size +1G > /etc/restic/exclude_large.lst'

相关内容