不用说了,解决方法连火星人都知道——分类。 这时候你应该已经想到了windows的树形目录了吧? 对喔,系统文件全放进c:\windows里,程序文件全放进c:\program files里,你个人的文件全放进c:\Documents and Settings里。 不过大多数有经验的windows用户又会发现一个问题——个人的文件放进c:\Documents and Settings里不好!由于windows的经典蓝屏的不可忽视的存在,这个c:不是个很可靠的地方,一旦它想提醒你它的不可忽视性的时候(天晓得是啥时候),虽然你拥有对硬盘的绝对控制权,但你却不得不面临是干掉匪徒还是拯救人质的两难处境(至于怎么彻底消灭这些匪徒这个问题,恐怕这个世界上没人知道),于是很多聪明人都会明智的选择把私人文件放到d盘或者e盘f盘……,反正只要不是c盘随便哪里都行。
OK,现在让我们把“理想”变成“现实”吧! 系统启动时,首先有一个分区被挂载到了/,可以理解为该分区被分配了/这个奇怪“盘符”(注意,在windows里,这个符号被用做命令参数引导符号,而反斜线\,英文backslash作为路径分割符,习惯不同而已,就像英国行车靠左一样,没啥可奇怪的)。 这个被挂载为/的分区,就叫做根分区(不管它是主分区还是逻辑分区),它从此开始在整儿linux系统里具有了特殊的地位,因为整儿电脑里的所有硬盘,包括其上的所有其他分区,不管是主分区、逻辑分区,都将以这个“根分区”为主干,开始构造linux大树,并最终成为这颗树上的一个分支或树叶。整个linux的系统结构里,有且只有一个root(根分区),不可能有第二个(其实,任何一个分区,都可以挂载为/,windows分区也可以。只不过挂载根分区的目的是启动系统,如果/下面没有linux内核及其所需的系统文件的话,将无法引导系统而已。所以这个根分区并不神秘)。 你的其他分区只能被继续挂载到/(根分区)下的某个目录里,比如“/mnt”或者“/media”或者“/什么什么”目录,看你喜欢喽。挂载好之后,当你向这个目录读写数据的时候,其实是在向被挂载到该目录的另一个分区读写数据。多个分区在同一个时候只能被挂载到多个不同的目录,比如“/mnt/a”、“/media/123”或者“/home/anywhere”,任何一个处于/之下的目录,都可以用来作为挂载其他分区的“平台”,当然系统需要的目录可不要用哈,你自己新建你自己的用吧。 挂载好之后,你硬盘里的数据,就可以通过类似/path/to/anywhere这样的方式找到;如果没有挂载就找不到喽。 用一个庸俗的比喻来说,“/”相当于c:\,而“/etc、/bin、/sbin、/lib”这些目录大概相当于c:\windows和c:\program files,“/home”相当于c:\Documents and Settings,而当你把第二分区挂载到“/mnt/partition2”的时候,这个目录就相当于d:\了,你地明白?
不信就挂一次试试:
代码:
cd /mnt (切换到/mnt目录)
sudo mkdir partition2 (新建一个名为partition2的空目录,你可以随意用其他名称)
sudo mount /dev/sda5 partition2 (如果你只有一个硬盘且第二分区是逻辑分区的话,这个命令就将挂载该分区到partition2)
cd partition2 (切换到/mnt/partition2目录)
ls (列出该目录的文件)
# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' 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>
proc /proc proc defaults 0 0
# / was on /dev/sda5 during installation
UUID=ce8493a2-73a2-46d3-ac32-fe28ac9ec860 / ext4 errors=remount-ro 0 0
# /home was on /dev/sda6 during installation
UUID=5ae0aea4-f7bb-4504-bf0c-f3dbffc8fa0f /home ext4 defaults 0 0
# swap was on /dev/sda7 during installation
UUID=db44da00-1b52-4d25-a870-57d36a6a2a85 none swap sw 0 0
或者也可能被写成了这样
代码:
# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' 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>
proc /proc proc defaults 0 0
# / was on /dev/sda5 during installation
/dev/sdc6 / ext4 errors=remount-ro 0 0
# /home was on /dev/sda6 during installation
/dev/sdc5 /home ext4 defaults 0 0
# swap was on /dev/sda7 during installation
/dev/sdc4 none swap sw 0 0
前面说了,如果你的电脑只有一块硬盘的话,那么所有分区都将被编号为sda,SCSI(IDE、SATA、USB disk) DISK A的意思,有两个的话就是sdb喽,而sda上的分区将继续被从1开始按物理顺序编号,所以你那个“D盘”,一般来说就是sda2了,请自己打开/etc/fstab(用sudo),在文件的最后加入一行(看不懂这些参数的乖仔请再次移步这里看3楼):
# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' 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>
proc /proc proc defaults 0 0
# / was on /dev/sda5 during installation
UUID=ce8493a2-73a2-46d3-ac32-fe28ac9ec860 / ext4 errors=remount-ro 0 0
# /home was on /dev/sda6 during installation
UUID=5ae0aea4-f7bb-4504-bf0c-f3dbffc8fa0f /home ext4 defaults 0 0
cd (确保当前处于“家目录”)
mkdir sda5 (建立一个名为“sda5”的空目录,之所以叫这个是为了保持与分区编号一致,以免头晕)
sudo mount /dev/sda5 sda5 (挂载第二分区到sda5)
cd sda5 (进去看看对不对)
ls (实在不习惯终端的话,也可以打开nautilus看)
确定没问题吗?那么继续
代码:
cd (回到“家目录”)
mkdir sda1 (再创建一个空目录用于挂载sda1)
sudo mount /dev/sda1 sda1 (挂载sda1)
cd sda5 (再次进入sda5)
sudo tar -cvpf ~/sda1/ubuntu.tar ./ (打包本目录下的所有文件到sda1,并命名为ubuntu.tar,注意这里没有使用压缩,只为了节约时间)
cd (回到“家目录”)
sudo mount /dev/sda5 sda5 (再次挂载sda5)
sudo mount /dev/sda1 sda1 (再次挂载sda1)
sudo tar -xvpf ~/sda1/ubuntu.tar -C ~/sda5 (释放刚才打包的文件到sda5目录)
cd sda5 (再次进入sda5看看有问题没?)