Docker 容器启动时更改文件的 ctime

Docker 容器启动时更改文件的 ctime

我在我的家庭服务器上运行以下 docker 镜像(以及其他镜像):ghcr.io/linuxserver/bookstack

一切都运行顺利,但我意识到一些相当奇怪的事情。

我使用 restic 备份我的 Docker 容器的数据。为了避免某些容器的数据库内容不一致,我停止了所有内容,运行备份命令,然后重新启动所有容器。

问题是,Bookstack 容器管理的卷中存储的文件的 ctime 属性在容器启动时会立即更改,我不知道具体原因,因为文件内容没有被修改,stat 命令也没有显示除 ctime 之外的任何其他属性更改。这会使备份速度慢得多(如果我使用 restic 的 --ignore-ctime 标志,则备份时间会超过 30 分钟,而 40 秒则需要 40 分钟)。

我运行的其他容器不会这样做。

我的问题是:为什么会发生这种情况?或者:如何找出文件中正在更新的属性,从而更新 ctime?

正如我所说的,我可以使用 --ignore-ctime restic 标志解决问题,但我想知道该图像发生了什么。

欢迎提供任何线索。

在此先感谢您的帮助。

答案1

这更像是镜像创建者的问题,而不是 docker 或 restic 的问题。我看到更改时间戳的一个常见原因是递归chown。看起来该镜像在各种脚本中都有几个,包括配置文件夹中的这个:

# set permissions
chown -R abc:abc \
    /config

https://github.com/linuxserver/docker-bookstack/blob/dce5e3c92390ec99624a744fbe8c83cfff395461/root/etc/cont-init.d/50-config

相关内容