
xfce4-Buster-Debian을 설치했고, 설치하는 동안 수동 파티셔닝을 선택하고 일부 파일이 포함된 드라이브를 특정 위치에 마운트하도록 선택했습니다. 물론 해당 드라이브의 경우 드라이브를 포맷하지 않기로 결정했습니다. 데비안을 다른 파티션에 설치하고 OS로 부팅한 후 마운트 디렉터리에 파일이 보이지 않습니다. 디렉토리는 내가 예상한 위치에 표시되지만, 디렉토리와 에 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
이 있는 디렉터리를 마스킹하는 것이 좋습니다.
다음과 같이 루트로 파일을 찾으세요.
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
. do show files 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
대신 사용했습니다 . mv
플래그 cp -u
는 오래된 파일이 새 파일을 덮어쓰는 것을 중지합니다.
답변2
/home
is는 하나의 ext4 파티션(또는 그 일부)의 마운트 지점이며 모든 사용자가 /home/userx
다음 과 같은 홈 디렉토리를 갖도록 설계되었습니다.
/home/go
그러나 동시에 두 번째 파티션(다른 장치)의 마운트 지점으로 사용하려고 합니다 . 'go' 파티션을 다른 곳에 마운트하는 것이 좋습니다 /mnt/go
. 이렇게 하면 데이터가 마운트 지점과 혼동되지 않습니다.
예를 들어 비디오 파일 전용의 큰 파티션이 있습니다. 이것은~ 아니다에 마운트되었지만 /home/video
에 마운트되었습니다 /mnt/video
.
내 GUI 파일 관리자는 이 배열에 매우 만족합니다.