我的 Ubuntu 计算机上的哪些目录实际上不在我的硬盘上?我正在制作个人备份软件,有些目录不是“真实的”。哪些目录实际上不在我的硬盘上?
谢谢
答案1
要列出所有已安装的文件系统及其虚拟的(即没有物理磁盘存储支持的)挂载点目录,您可以解析该命令的输出mount
。
/dev/sd
为简单起见,我仅过滤掉所有以或开头的设备对应的挂载/dev/mmcblk
,这些挂载应涵盖大多数硬盘分区和可移动媒体。这并不完美,因为您可能有显示不同的设备,因此不会被过滤掉,但由于您稍后仍会在输出中看到挂载的内容,因此我更喜欢这里的假阳性结果而不是假阴性。如果您发现需要添加某些内容,只需将其添加到第一个grep
命令的正则表达式模式中,放在括号内(...)
,并用竖线与其他过滤行开头分隔开|
。
mount | grep -vE '^(/dev/sd|/dev/mmcblk)' | grep -oE '\S+ on \S+' | sort -k3 | column -t
这将生成一个挂载列表,就像我的示例机器上的挂载列表一样:
$ mount | grep -vE '^(/dev/sd|/dev/mmcblk)' | grep -oE '\S+ on \S+' | sort -k3 | column -t
udev on /dev
hugetlbfs on /dev/hugepages
mqueue on /dev/mqueue
devpts on /dev/pts
tmpfs on /dev/shm
proc on /proc
binfmt_misc on /proc/sys/fs/binfmt_misc
systemd-1 on /proc/sys/fs/binfmt_misc
tmpfs on /run
cgmfs on /run/cgmanager/fs
hugetlbfs-kvm on /run/hugepages/kvm
tmpfs on /run/lock
tmpfs on /run/user/1000
gvfsd-fuse on /run/user/1000/gvfs
sysfs on /sys
efivarfs on /sys/firmware/efi/efivars
tmpfs on /sys/fs/cgroup
cgroup on /sys/fs/cgroup/blkio
cgroup on /sys/fs/cgroup/cpu,cpuacct
cgroup on /sys/fs/cgroup/cpuset
cgroup on /sys/fs/cgroup/devices
cgroup on /sys/fs/cgroup/freezer
cgroup on /sys/fs/cgroup/hugetlb
cgroup on /sys/fs/cgroup/memory
cgroup on /sys/fs/cgroup/net_cls,net_prio
cgroup on /sys/fs/cgroup/perf_event
cgroup on /sys/fs/cgroup/pids
cgroup on /sys/fs/cgroup/systemd
fusectl on /sys/fs/fuse/connections
pstore on /sys/fs/pstore
debugfs on /sys/kernel/debug
securityfs on /sys/kernel/security
none on /tmp
此列表应在右侧显示已安装虚拟文件系统的所有路径,并在左侧显示相应的文件系统类型。如上所述,由于/dev/sd*
仅进行过滤,列表中可能会出现一些误报结果。
因此,从该列表我们可以得出结论/dev
,、、和是纯虚拟的。请注意,虽然前四个目录在所有 Ubuntu 安装中都是虚拟的,但通常存储在硬盘上,除非您像我一样手动将/proc
其设为 tmpfs。无论如何,它都不应包含在备份中。/run
/sys
/tmp
/tmp
如果您想要一种方法来减少路径列表并过滤掉所有仅仅是已经提到的路径的子目录(例如/dev/pts
可以省略因为/dev
已经列出),请查看有了路径列表,我如何过滤掉前面提到的路径的子目录?
答案2
这实际上取决于您要如何恢复系统。如果您要重建,那么您只需要服务的配置/数据文件(例如:/etc、/opt、/var、/home)
如果您想要完全恢复系统,那么您可以忽略 /proc、/boot 和 /dev。然后您可以从启动媒体安装最小操作系统,然后通过备份恢复系统。