我需要将 Ubuntu 拆分成两个分区:一个分区,包含所有需要不是随着时间的推移而变化,例如由于约会时间和登录,另一个分区包含所有可能随时间变化的文件。为了检查第一个分区的哈希值(签名)是否保持不变(即不会随时间变化),我需要使用哈希算法,例如MD5或者SHA1。
问题:
如何确定文件系统中每个分区包含哪些目录/文件?
如果 Ubuntu 保持正常工作,那么执行此分区的步骤是什么?
提前致谢 !
答案1
/
总体而言,Linux 正在慢慢转向可以作为“只读”安装而其他分区可以作为“可写”安装的系统。
此移动通过将内容移动到以“run”为子目录的目录中来完成。这些是“可写的”。当您查看时,df -h
您会看到其中的一些:
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 5,8G 0 5,8G 0% /dev
tmpfs 1,2G 9,5M 1,2G 1% /run
/dev/sda2 46G 8,1G 36G 19% /
tmpfs 5,9G 31M 5,8G 1% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 5,9G 0 5,9G 0% /sys/fs/cgroup
/dev/sda1 47M 3,6M 43M 8% /boot/efi
/dev/sda5 34G 11G 22G 34% /home
/dev/sdb1 917G 235G 636G 27% /discworld
cgmfs 100K 0 100K 0% /run/cgmanager/fs
tmpfs 1,2G 76K 1,2G 1% /run/user/1000
作为另一种措施,这些(通常)被安装为临时文件系统(tmpfs)。
现在来谈谈正题。
由于目前文件没有定义是否可写,因此它们分散在整个文件系统中。
遵循 FHS 并坚持主要目录:
/bin
、/lib
和/sbin
都/usr
可以以只读方式安装。/etc
,,,,必须是/home
可写的。/srv
/tmp
/var
/dev
、、/proc
和/selinux
由/sys
特殊的文件系统处理。
只读根Debian 页面上有一篇关于阻止目录变为只读的特定文件的更深入的文章。例如,/etc/
在将其分为只读文件和可写文件方面,情况相当混乱。
链接末尾的命令仅适用于zsh
。在聊天中@serg 提出了以下替代方案:
{ lsof +L1; lsof|sed -n '/SYSV/d; /DEL\|(path /p;' ; } |grep -Ev '/(dev|home|tmp|var)'
此命令列出打开的进程:
lsof /
这里有一个过滤器,仅显示阻止您以只读方式挂载的进程 ID:
lsof -F pa /home | awk '/^p/ {pid = substr($0, 2)} /^a.*w/ {print pid}'
Gilles 提出了最后一个所以赞同他的回答:)