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
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
/home/userx
is는 모든 사용자가 다음 과 같은 홈 디렉토리를 가질 수 있도록 설계된 ext4 파티션(또는 그 일부)의 마운트 지점입니다.
/home/go
그러나 이를 두 번째 파티션(다른 장치에서!)에 대한 마운트 지점 으로도 사용하려고 합니다 . "go" 파티션을 다른 곳에 마운트하는 것이 좋습니다 /mnt/go
. 이렇게 하면 데이터가 마운트 지점과 혼동되지 않습니다.
예를 들어 비디오 파일 전용의 큰 파티션이 있습니다. 이것은아니요에 설치되었지만 /home/video
에 설치되었습니다 /mnt/video
.
내 GUI 파일 관리자는 이 배열에 매우 만족합니다.