Mount

為什麼對用作掛載點的目錄的複制操作不會將數據複製到已掛載的驅動器?

  • December 31, 2018

為什麼對用作掛載點的目錄的複制操作不會將數據複製到已掛載的驅動器?

我買了一個 2 TB 的驅動器並將它安裝在我的主目錄中的一個子目錄中。

/dev/sdb我的 500GB 系統驅動器在哪裡,/dev/sda我的 2TB 數據驅動器在哪裡:

Partition        Mountpoint
/dev/sdb1   ->   /
/dev/sdb3   ->   /home
/dev/sdb2   ->   swap
/dev/sda1   ->   /home/data

這一切似乎都可以工作,甚至可以df -h正確顯示(即,/dev/sda1安裝在/home/data[以重新生成我引導到我的arch磁碟實時環境的fstab並將分區安裝到/mnt我想要分區的文件夾中,執行genfstab -U /mnt > /mnt/etc/fstab;它工作] )

昨晚我將我的盒子設置為執行 650GB 的複制操作到/home/data. 想像一下,當大量複製操作由於磁碟空間不足而失敗時,我會感到驚訝。

df -h顯示/dev/sdb3已滿但/dev/sda1幾乎為空 (77MB)。據我所知,掛載點執行正常,但是複制操作將所有數據放入/dev/sdb3!據推測,如果我解除安裝驅動器,音樂仍然會在/home/data.

顯然,我不完全理解關於安裝和 fstab 的一些內容。

fstab 中的特定條目如下:

# /dev/sdb1
UUID=<UUID>    /            ext4     rw,relatime 01

# /dev/sdb3
UUID=<UUID>    /home        ext4     rw,relatime 02

# /dev/sda1
UUID=<UUID>    /home/data   ext4     rw,relatime 02

在重新生成 fstab 之前,我在 fstab 中有一個交換條目。我不知道為什麼它沒有再生。

更新:我設法得到輸出mount

proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sys on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
dev on /dev type devtmpfs (rw,nosuid,relatime,size=4051032k,nr_inodes=1012758,mode=755)
run on /run type tmpfs (rw,nosuid,nodev,relatime,mode=755)
/dev/sdb1 on / type ext4 (rw,relatime)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup2 on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
bpf on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=44,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13569)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev)
configfs on /sys/kernel/config type configfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
/dev/sdb3 on /home type ext4 (rw,relatime)
/dev/sda1 on /home/data type ext4 (rw,relatime)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=811560k,mode=700,uid=1000,gid=1000)

你提到你的複制命令是cp -r /mnt/music data/當你在~.

這意味著您將數據複製到/home/<username>/data,因為~將擴展為/home/username

/home/data但是,根據mount您提供的輸出,您的外部驅動器安裝為。為了完成你的目標,你需要做兩件事:

  • 將所有數據複製/home/<username/data/home/data目錄中。

    • rsync -avHP /home/<username>/data/* /home/data/(或一些變化)
    • 這會將所有數據移出您的主分區並進入外部驅動器。
  • 修復您想要訪問驅動器的方式

    • 讓它掛載為/home/data,然後以這種方式訪問它
    • 一種選擇是創建一個符號連結~來訪問它:ln -s /home/data ~/data
    • 另一種選擇是編輯您的 fstab 以將外部驅動器的掛載點設置為/home/<username>/data

引用自:https://unix.stackexchange.com/questions/491755