我安装了 xfce4-Buster-Debian,在安装过程中,我选择了手动分区,并选择将包含一些文件的驱动器安装到特定位置。对于该驱动器,我当然选择不格式化该驱动器。将 Debian 安装在不同的分区上并启动到操作系统后,我在安装目录中看不到任何文件。该目录显示在我期望的位置,但是当我 cd 进入该目录时ls -la
,该目录中没有任何内容。但根据 GParted 的说法,数据正在占用空间。
我启动到 LiveCD,文件确实显示在那里。
造成这种行为的可能原因有哪些?
编辑:我提供以下输出
$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a device; this may
# be used with UUID= as a more robust way to name devices that works even if
# disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=ff57c2c0-e962-4578-be1b-0500f82bceb3 /home/go ext4 defaults,noatime 0 2
UUID=16DB-7490 /boot/efi vfat defaults,noatime 0 2
UUID=6ff37539-9538-40d4-b3bf-094f44e8410f / ext4 defaults,noatime 0 1
UUID=5fb9e868-f3c7-47a5-96da-7ccf13bfd998 /home ext4 defaults,noatime 0 2
UUID=25a379fc-3db3-4f58-813b-a914d147e7c2 swap swap defaults,noatime 0 2
$ lsblk -f
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
sda iso9660 d-live nf 10.6.0 xf amd64 2020-09-26-13-15-55-00
├─sda1 iso9660 d-live nf 10.6.0 xf amd64 2020-09-26-13-15-55-00 0 100% /media/marius/d-live nf 10.6.0
└─sda2 vfat d-live nf 10.6.0 xf amd64 DEB0-0001
sdb
└─sdb1 vfat F802-75AF 27,9G 3% /media/marius/F802-75AF
mmcblk0
└─mmcblk0p1 ext4 ff57c2c0-e962-4578-be1b-0500f82bceb3 53,8G 1% /home/go
nvme0n1
├─nvme0n1p1 ext4 6ff37539-9538-40d4-b3bf-094f44e8410f 58,5G 18% /
├─nvme0n1p2 ext4 5fb9e868-f3c7-47a5-96da-7ccf13bfd998 101,4G 15% /home
├─nvme0n1p3 swap 25a379fc-3db3-4f58-813b-a914d147e7c2 [SWAP]
└─nvme0n1p4 vfat 16DB-7490 294,3M 2% /boot/efi
该设备是mmcblk0p1
并且安装点是/home/go
编辑2:
$ stat -c '%n - %i' / /home /home/go
/ - 2
/home - 2
/home/go - 2
答案1
我本来打算要求您提供 的输出stat -f -c '%n - %i' / /home /home/go
,这将给出目录下的文件系统的设备标识符。 (如果它们都不同,我们就会知道它们是不同的文件系统。)但是,stat -c '%n - %i' / /home /home/go
我给您的命令的输出足以满足我们的目的 - 它告诉我们所有三个目录的根 inode 是相同的,即 2 ,这也意味着它们必须是不同的文件系统。
鉴于您可以在 LiveCD 中看到这些文件,但在实际的引导环境中看不到这些文件,我建议您将文件打开,并且/
在挂载时屏蔽文件所在的目录。/home
/home/go
以 root 身份查找文件,如下所示
mkdir /mnt/root # Create temporary directory mountpoint
mount --bind / /mnt/root # Make /mnt/root identical to /
ls /mnt/root/home # List area hidden by /home
ls /mnt/root/home/go # List area hidden by /home/go
如果任一ls
命令生成文件,那么您将不会在相应的ls /home
或ls /home/go
.假设 - 但仅当 - 的ls
命令/mnt/home/...
显示文件,但相应的命令/home/...
不显示文件,那么您可以使用这两个段之一或两者将文件移动到正确的位置。
将所有文件从屏蔽文件移至/home/go
真实文件/home/go
:
(
shopt -s dotglob
cp -au /mnt/root/home/go/. /home/go && rm -rf /mnt/root/home/go/*
)
将所有文件从屏蔽文件移至/home
真实文件/home
:
(
shopt -s dotglob
cp -au /mnt/root/home/. /home && rm -rf /mnt/root/home/*
)
我使用了cp && rm
not ,mv
因为我不希望命令在合并过程中失败。该cp -u
标志阻止旧文件覆盖新文件。
答案2
/home
is 是一个 ext4 分区(或其中一部分)的挂载点,其设计目的是让所有用户都有一个主目录,例如/home/userx
etc
但是,您同时希望用作/home/go
第二个分区的安装点(在另一台设备上!)。我强烈建议您将“go”分区挂载到其他地方/mnt/go
。这样您的数据就不会与您的安装点混淆。
例如,我有一个专门用于视频文件的大分区。这是不是安装在 上/home/video
,但是安装在 上/mnt/video
。
我的 GUI 文件管理器对这种安排非常满意。