我应该如何恢复 /var/cache?

我应该如何恢复 /var/cache?

我刚刚从映像恢复了我的 Raspberry Pi 服务器rsync。在备份过程中,我排除了/var/cache/*,认为这会恢复一个空目录。这有效,但是当我重新启动时,一个进程抱怨它无法在以下邮件中写入它。

Subject: status report from ddclient@raspberrypi
...
WARNING:  updating <url>.dynu.com: nochg: No update required; unnecessary attempts to change to the current address are considered abusive
FATAL:    Cannot create file '/var/cache/ddclient/ddclient.cache'. (No such file or directory)

我检查了权限/var/log,和我的Arch桌面系统一致。

$ ls -ld /var/cache/
drwxr-xr-x 3 root root 4096 Aug 15 13:23 /var/cache/

我还需要做其他事情吗?如果权限是a-w,那么非root进程怎么可以在这里写入呢?

答案1

/var/cache不是一种混战之类的/var/tmp。每个需要它的服务都有一个子目录,/var/cache具有适当的权限来存储文件。

在 Debian 及其派生发行版上,您可以运行dpkg -S /var/cache来查找哪些软件包在 下设置了目录/var/cache,并apt-get --reinstall install PACKAGE_NAME …重新安装这些软件包并在 下重新创建目录/var/cache

某些应用程序会动态重新填充其缓存。其他需要显式填充缓存;这通常是由 cron 作业完成的。有一些需要手动填充;例如,要使用apt-file,您首先需要apt-file update以 root 身份运行。

Debian 上有一个/var/cache无法重建的部分:/var/cache/debconf/config.dat。该文件包含您在安装 Debian 软件包期间给出的答案。这是一个长期存在的错误在 Debconf 中。

答案2

幸运的是,我仍然有损坏的文件系统的副本,因此我知道/var/cache我的系统应该包含哪些内容。

cd /var/cache
sudo mkdir apache2 apt ddclient debconf dictionaries-common fontconfig ldconfig man modsecurity
sudo chmod a=,u=rwx ldconfig
sudo chmod g=rsx man
sudo chown man man
sudo chown www-data modsecurity
sudo mkdir apache2/mod_cache_disk 
sudo chown www-data:www-data apache2/mod_cache_disk

重新启动后apt-get update,大多数目录都被重新填充。但是,其中缺少几个文件man,所以我用

sudo apt-get --reinstall install man

我也发现了,dictionaries-common现在fontconfig是空的,但我不担心这些,因为我不知道他们在我的无头服务器上做什么! (可能是 ownCloud 对 Libreoffice 的依赖。)

此信息可能特定于我的系统。将来我不会将其排除/var/cache在备份之外。

相关内容