我刚刚从映像恢复了我的 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
在备份之外。