Eu também achei isso muito confuso. Aqui está um exemplo rápido. Acho que x versus X se torna útil se você tiver uma árvore profunda dentro de um diretório específico e quiser excluir alguns e não todos os diretórios.
Aqui está o meu exclude.conf:
root# cat /etc/tmpfiles.d/exclude.conf
d /tmp/testdir 0755 root root 1s
x /tmp/testdir/*
Agora, crio alguns diretórios:
# mkdir /tmp/testdir/a ; mkdir /tmp/testdir/b; mkdir /tmp/testdir/ab
# ls -lrt /tmp/testdir/
total 0
drwxr-xr-x. 2 root root 6 Sep 1 12:55 a
drwxr-xr-x. 2 root root 6 Sep 1 12:55 b
drwxr-xr-x. 2 root root 6 Sep 1 12:55 ab
Correr limpo
#systemd-tmpfiles --clean exclude.conf
Verifique
# ls -lrt /tmp/testdir
total 0
drwxr-xr-x. 2 root root 6 Sep 1 12:55 a
drwxr-xr-x. 2 root root 6 Sep 1 12:55 b
drwxr-xr-x. 2 root root 6 Sep 1 12:55 ab
Agora, se X /tmp/testdir/*
, obtiver o mesmo resultado. Então, se eu tiver x /tmp/testdir/b
, exclui o diretório 'b' da limpeza.
#systemd-tmpfiles --clean exclude.conf
# ls -lrt /tmp/testdir/
total 0
drwxr-xr-x. 2 root root 6 Sep 1 12:55 b
Além disso, X /tmp/testdir/b
mostra o mesmo comportamento. No entanto, X /tmp/testdir/
e x /tmp/testdir
excluirão todos os subdiretórios dentro de testdir
, mas manterão testdir
.
Sugiro testar as configurações antes de colocá-lo no lugar. Eu a man page poderia ser um pouco mais clara.