Linux 档案属性与目录配置2

46 篇文章 0 订阅
Linux 支持的档案格式与档案种类
Linux 的档案与 Windows 的档案能不能互相使用?为何可以?为何不行?这些咚咚都涉及到 Linux 的档案类型与档案格式喔!底下我们就来谈一谈这些基本的观念吧!

  • 档案格式:
    什么是档案格式呢?就是你的操作系统用来存取的数据格式,例如我们知道 Windows 用来存取硬盘的数据格式为 FAT (或 FAT16 ) ,而 Windows 2000 也有所谓的 NTFS 档案格式等等,至于 Linux 的正统档案格式为 ext2 这一个。不过,目前 Linux 所能支持的档案格式非常的多,不过,你必须要将你所想要支持的档案格式编译到你的核心当中才能被支持!因为如果核心不认识该档案格式的话,那么自然就无法取用呀!因此,您可以发现, Windows 与 Linux 安装在同一个硬盘的不同 partition 时, Windows 将不能取用 Linux 的硬盘数据, Why ? 就因为 Windows 的核心不认识 Linux 的档案系统呀!
     
    目前 Mandrake 9.0 预设的档案格式为 ext3 (Third Extended File System ),是 ext2 档案格式的升级版,不过也向下兼容 ext2, ext 等等。另外,如果你需要将你原有的 Windows 系统也挂载在 Linux 底下的话,那么 Linux 也支持 MS-DOS, VFAT, FAT, BSD 等等的档案格式,至于 Window NT 的 NTFS 档案格式则不见得每一个 Linux distribution 都有支持,例如 Red Hat 预设的核心就不支持 NTFS,但是 Mandrake 9.0 的核心竟然预设有支持 ntfs 耶!真高兴!问我怎么看出来的?呵呵! Linux 能够支持的档案格式与核心是否有编译进去有关,所以你可以到你的 Linux 系统的
    •  
      /lib/modules/`uname –r`/kernel/fs

       
    底下看一看,如果有你想要的档案格式,那么这个核心就有支持啦!目前使用的最广泛的虽然还是 ext2 ,不过,最近释出的 Linux distribution 大多已经预设采样 ext3 或 reiserfs 这种具有日志式管理( Journaling )的档案格式了。那为什么要使用 ext3 这种档案格式呢?我们采用第一个使用 ext3 做为 Linux distribution 的 Red Hat 公司中,首席核心开发者 Michael K. Johnson 的话:
    •  
      『为什么你想要从ext2转换到ext3呢?有四个主要的理由:可利用性、数据完整性、速度及易于转换』

      『可利用性』,他指出,这意味着从系统中止到快速重新复原而不是持续的让e2fsck执行长时间的修复。ext3的日志式条件可以避免数据毁损的可能。他也指出:

      『除了写入若干数据超过一次时,ext3往往会较快于ext2,因为ext3的日志使硬盘读取头的移动能更有效的进行』

      然而或许决定的因素还是在Johnson先生的第四个理由中。

      『它是可以轻易的从ext2变更到ext3来获得一个强而有力的日志式档案系统而不需要重新做格式化』。『那是正确的,为了体验一下ext3的好处是不需要去做一种长时间的,冗长乏味的且易于产生错误的备份工作及重新格式化的动作』。

       
    更详细的 ext3 说明在底下的连结中:ext3 or ReiserFS? Hans Reiser Says Red Hat's Move Is Understandable ( http://www.linuxplanet.com/linuxplanet/reports/3726/1/ ) 所以啰,我们可以使用 ext3 来做为我们的 Linux 的档案格式啦! ^_^ 。在这里,您只要记得,我们 Linux 正统的档案格式是 ext2 ,而目前有逐渐被 Journaling 的档案格式取代的趋势就是了。
     

  • 档案种类:
    谈完了档案格式之后,再来谈谈所谓的档案种类吧!我们在刚刚的属性介绍中提到了最前面的标志 ( d 或 - ) 可以代表目录或档案,那就是不同的档案种类啦!Linux 的档案种类主要有底下这几种:
     
    • 正规档案( regular file ):就是一般类型的档案,在由 ls –al 所显示出来的属性方面,第一个属性为 [ - ]。另外,依照档案的内容,又大略可以分为两种档案种类:
      • 纯文字文件(ascii) :这是 Unix 系统中最多的一种啰,几乎只要我们可以用来做为设定的档案都属于这一种;
      • 二进制文件(binary) :通常执行档除了 scripts (文字型批次文件)之外,就是这一种档案格式;
       
    • 目录 (directory):就是目录啦!第一个属性为 [ d ];
     
    • 连结档 (link):就是类似 Windows 底下的快捷方式啦!第一个属性为 [ l ];
     
    • 设备档 (device):与系统周边相关的一些档案,通常都集中在 /dev 这个目录之下!通常又分为两种:
      • 区块 (block) 设备档 :就是一些储存数据,以提供系统存取的接口设备,简单的说就是硬盘啦!例如你的一号硬盘的代码是 /dev/hda1 等等的档案啦!第一个属性为 [ b ];
      • 字符 (character) 设备档 :亦即是一些串行端口的接口设备,例如键盘、鼠标等等!第一个属性为 [ c ]。
     
    那么使用刚刚的『 ls -al 』这个指令,你就可以简单的经由判断每一个档案的第一个属性来了解这个档案是何种类型!很简单吧!

    除了设备文件是我们系统中很重要的档案,最好不要随意修改之外(通常他也不会让你修改的啦!),另一个比较有趣的档案就是连结档。如果你常常将应用程序捉到桌面来的话,你就应该知道在 Windows 底下有所谓的『快捷方式』。同样的,你可以将 linux 下的连结档简单的视为一个档案或目录的快捷方式。但是基本上这两个东西是不一样的!在 Windows 系统的快捷方式中,你将无法修改主程序,但是在 Linux 中,连结档可以直接连结到主程序,因此你只要改了这个连结文件,则主程序亦被改变了!这部份我们也会在后面的连结档介绍中,再次详细的谈一谈。


  • Linux 档案附档名:
    基本上,Linux 档案的附档名是没有意义的!因为由前面的说明我们可以知道,一个 Linux 档案能不能被执行,与他的第一栏的十个属性有关,与文件名根本一点关系也没有。这个观念跟 Windows 的情况不相同喔!在 Windows 底下,能被执行的档案附档名通常是 .com .exe .bat 等等,而在 Linux 底下,只要你的属性当中有 x 的话,例如 [ -rwx-r-xr-x ] 即代表这个档案可以被执行喔!不过,由于我们仍然希望可以藉由附档名来了解该档案是什么东西?!所以,通常我们还是会以适当的附档名来表示该档案是什么种类的。简单的分别,底下有数种常用的附档名:
     
    • 批次檔 ( scripts ):通常以 *.sh 来代表,(因为批次档为使用 shell 写成的,所以附档名就编成 .sh 啰);
    • 打包或压缩档:通常附档名为 *.Z, *.tar, *.tar.gz, *.zip, *.tgz 等等,这是因为压缩软件分别为 gunzip, tar 等等的,由于不同的压缩软件,而取其相关的附档名啰!
    • 网页相关档案:通常使用 *.html 与 *.php 等等的档案,分别代表 HTML 语法与 PHP 语法的网页档案啰!这种档案可以使用网页浏览器来开启!
     
    另外,还有程序语言如 perl 的档案,其附档名也可能取成 .pl 这种档名!基本上, Linux 上面的档名真的只是让你了解该档案可能的用途而已,真正的执行与否仍然需要属性的规范才行!例如虽然有一个档案为可执行文件,如有名的代理服务器软件 squid ,不过,如果这个档案的属性被修改成无法执行时,那么他就变成不能执行啰!这种问题最常发生在档案传送的过程中。例如你在网络上下载一个可执行档,但是偏偏在你的 Linux 系统中就是无法执行!呵呵!那么就是可能档案的属性被改变了!不要怀疑,从网络上传送到你的 Linux 系统中,档案的属性确实是会被改变的喔!
     
    再提个另外!在 Linux 底下,每一个档案或目录的文件名最长可以到达 256 的字符,是相当长的档名喔!我们希望 Linux 的文件名称可以一看就知道该档案在干嘛的,所以档名通常是很长很长!而用惯了 Windows 的人可能会受不了,因为文件名称通常真的都很长,对于用惯 Windows 而导致打字速度不快的朋友来说,嗯!真的是很困扰.....不过,只得劝您好好的加强打字的训练啰!当然啦,如果您已经读完了本书第三篇关于 BASH 的用法,那么您将会发现『哇!变量真是一个相当好用的东西吶!』嗯!看不懂,没关系,到第三篇谈到 bash 再说!

Linux 目录配置:
在 Linux 系统的预设状态下,你在根目录中输入『 ls -l 』应该可以看到如下的画面:
 
[vbird@tsai vbird ]$ cd /
[vbird@tsai /]$ ls -l
total 153
drwxr-xr-x    2 root     root         4096 Feb 10 02:06 bin
drwxr-xr-x    3 root     root         4096 Feb 10 00:05 boot
drwxr-xr-x   17 root     root        77824 Feb 11 14:45 dev
drwxr-xr-x   41 root     root         4096 Feb 16 15:18 etc
drwxr-xr-x    8 root     root         1024 Feb  9 22:44 home
drwxr-xr-x    2 root     root         4096 Jun 22  2001 initrd
drwxr-xr-x    6 root     root         4096 Feb 10 02:12 lib
drwxr-xr-x    2 root     root        16384 Feb 10 05:35 lost+found
drwxr-xr-x    2 root     root         4096 Aug 30 00:10 misc
drwxr-xr-x    3 root     root         4096 Feb  9 22:05 mnt
drwxr-xr-x    2 root     root         4096 Aug 24  1999 opt
dr-xr-xr-x  102 root     root            0 Feb 11 22:45 proc
drwx------    4 root     root         4096 Feb 16 15:25 root
drwxr-xr-x    2 root     root         4096 Feb 14 21:28 sbin
drwxrwxrwt    2 root     root         4096 Feb 16 15:40 tmp
drwxr-xr-x   16 root     root         4096 Feb 10 01:28 usr
drwxr-xr-x   20 root     root         4096 Feb 14 21:41 var
 
由属性的角度来看,上面的档名每个都是『目录名称』,较为特殊的是 root ,由于 root 这个目录是管理员 root 的家目录,这个家目录可重要了!所以一定要设定成较为严密的 700 ( rwx------ )这个属性才行吶!如果以较为完整的树状目录来视察的话,可以将整个 Linux 的树状目录会制程下图:
请注意,每个目录都是依附在 / 这个根目录底下的,所以我们在安装的时候一定要有一个 / 对应的 partition 才能安装的原因即在于此!这也就是我们俗称的『树状目录』啰!
 
每个目录的大致内容如下表所示:
 
/bin这是放例如: ls, mv, rm, mkdir, rmdir, gzip, tar, telnet, 及 ftp 等等常用的执行档的地方(这些执行档的执行方法会在后面提到),有时候这个目录的内容与 /usr/bin 是一样的(有时候甚至会使用连结档哩),是给一般使用者使用的执行程序放置的所在!
/boot没错,这里就是放置你 Linux 核心与开机相关档案的地方,这个目录底下的 vmlinuz-xxx 就是 Linux 的 Kernel 啦!粉重要的东西!而如果你的开机管理程序选择 grub 的话,那么这个目录内还有 /boot/grub 这个次目录呦!
/dev摆放一些与装置有关的档案。基本上 Unix 或 Linux 系统均把装置当成是一个档案来看待,例如 /dev/fd0 代表软盘,亦即 Windows 系统下的 A 槽,而 /dev/cdrom 则代表光盘,等等!而如上所述,在这个目录底下的档案型态通常分为两种喔,分别是管理磁盘 Input/Output 的 Block 档案与周边的 Character 档案。
/etc系统在开机过程中需要读取的档案均在这个目录中,例如 Lilo 的参数、人员的账号与密码、系统的主要设定、http 架站的参数内容、你所要开启的服务项目等等都在这个目录中,所以在这个目录下工作的时候,请记得一定要备份,否则档案被改掉了可是很麻烦的!
/etc/rc.d这个路径主要在记录一些开关机过程中的 scripts 档案, scripts 有点像是 DOS 下的批次档(.bat檔名)
/etc/rc.d/init.d所以服务预设的启动 scripts 都是放在这里的,例如要启动与关闭 iptables 的话,可以: 
/etc/rc.d/init.d/iptables start
/etc/rc.d/init.d/iptables stop
/etc/xinetd.d这个路径在较新的 Linux distribution 当中才有,由于早期的版本用来开启服务的档案是 inetd.conf ,但是在较新的版本中,开启服务的项目已经变成使用 xinetd.conf 这个档案,因此,你若需要启动一些额外的服务的话,在 Mandrake 9.0 或者是 Red Hat 7.0 以后就要到 /etc/xinetd.d 这个目录下了。
/etc/X11这是与 X windows 有关的设定文件所在的目录,尤其里面的 XF86Config-4 更是重要呢!
/home基本上,这是系统预设的使用者的家目录( home directory ),在你新增一般使用者账号的时候,预设的使用者家目录都在这里设定好啰!
/lib在 Linux 执行或编译一些程序的时候,均会使用到一些函式库(library),就在这个目录下
/lost+fount系统不正常产生错误时,会将一些遗失的片段放置于此目录下,通常这个目录会自动出现在装置目录下。例如你加装一棵硬盘于 /disk 中,那在这个目录下就会自动产生一个这样的目录 /disk/lost+found
/mnt这是软盘与光盘预设挂载点的地方;通常软盘挂在 /mnt/floppy 下,而光盘挂在 /mnt/cdrom 下,不过也不一定啦!只要你高兴,随便找一个地方来挂载也可以呀!
/proc系统核心与执行程序的一些信息。例如你的网络状态的问题啦!这个目录将在启动 Linux 的时候自动的被挂上,而且该目录底下不会占去硬盘空间!因为里面都是『内存』内的数据啦
/root系统管理员的家目录
/sbin放置一些系统管理常用的程序,例如: fdisk, mke2fs, fsck, mkswap, mount 等等。与 /bin 不太一样的地方,这个目录下的程序通常是给 root 等系统管理员使用的程序喔!
/tmp这是让一般使用者暂时存放档案的地方,例如你在安装 Linux 下的软件时,可能软件预设的工作目录就是 /tmp ,所以你要定期的清理一下,当然,重要数据最好不要放在这里!
/usr这是最重要的一个目录了,里面含有相当多的系统信息,内有许多目录,用来存放程序与指令等等。这个目录有点像是 Windows 底下的『Program Files』那个目录说~
/usr/bin放置可执行程序,如前所说,这个目录的档案与 /bin 几乎是相同的。
/usr/include一些套件的header檔。基本上,当我们在以 tarball 方式( *.tar.gz 的方式安装软件)安装某些数据时,会使用到的一些函式库都在这个目录底下喔!
/usr/lib内含许多程序与子程序所需的函式库。
/usr/local在你安装完了 Linux 之后,基本上所有的配备你都有了,但是软件总是可以升级的,例如你要升级你的 proxy 服务,则通常软件预设的安装地方就是在 /usr/local 中( local 是『当地』的意思),同时,安装完毕之后所得到的执行文件,为了与系统原先的执行文件有分别,因此升级后的执行档通常摆在 /usr/local/bin 这个地方。 

给个建议啦,通常 VBird 都会将后来才安装上去的软件放置在这里,因为便于管理呦!

/usr/sbin放置管理者使用程序,与 /sbin 类似的功能
/usr/share/doc放置一些系统说明文件的地方,例如你安装了 lilo 了,那么在该目录底下找一找,就可以查到 lilo 的说明文件了!很是便利!
/usr/share/man放置一些程序的说明文件的地方,那是什么?呵呵!就是你使用 man 的时候,会去查询的路径呀!例如你使用 man ls 这个指令时,就会查出 /usr/share/man/man1/ls.1.bz2 这个说明档的内容啰!
/usr/src这是放置核心原始码的预设目录,未来我们要编译核心的时候,就必须到这个目录底下呦!
/usr/X11R6X Window System存放相关档案的目录
/var这个目录可就重要了!所有服务的登录文件或错误讯息档案(log files)都在 /var/log 里面,此外,一些数据库如 MySQL 的数据库则在 /var/lib 里头,此外,使用者未读邮件邮件的预设放置地点为 /var/spool/mail !呵呵!你说重不重要呀!?

  • 需要注意的目录
    在 Linux 系统中,有几个目录是特别需要注意的,以下提供几个需要注意的目录,以及预设相关的用途:
     
    • /etc:这个目录相当重要,如前所述,你的开机与系统数据文件均在这个目录之下,因此当这个目录被破坏,那你的系统大概也就差不多该死掉了!而在往后的文件中,你会发现我们常常使用这个目录下的 /etc/rc.d/init.d 这个子目录,因为这个 init.d 子目录是开启一些 Linux 系统服务的 scripts (可以想成是批次檔 )的地方。而在 /etc/rc.d/rc.local 这个档案是开机的执行档,有点像是旧 Windows 系统下的 autoexec.bat 及 config.sys 檔。所以,如果你有需要在开机加载的服务或执行档案,可以写在这个档案的最后一行,则开机时就会自动帮你加载执行档了!
     
    • /bin, /sbin, /usr/bin, /usr/sbin:这是系统预设的执行文件的放置目录,例如 root 常常使用的 userconf, netconf, perl, gcc, c++ 等等的数据都放在这几个目录中,所以如果你在提示字符下找不到某个执行档时,可以在这四个目录中查一查!其中, /bin, /usr/bin 是给系统使用者使用的指令,而 /sbin, /usr/sbin 则是给系统管理员使用的指令!
     
    • /usr/local:这是系统预设的让你安装你后来升级的套件的目录。例如,当你发现有更新的 Web 套件(如 Apache )可以安装,而你又不想以 rpm 的方式升级你的套件,则你可以将 apache 这个套件安装在 /usr/local 底下。安装在这里有个好处,因为目前大家的系统都是差不多的,所以如果你的系统要让别人接管的话,也比较容易上手呀!也比较容易找的到数据喔!因此,如果你有需要的话,通常我都会将 /usr/local/bin 这个路径加到我的 path 中
     
    • /home:这个是系统将有账号的人口的家目录设置的地方。
     
    • /var:这个路径就重要了!不论是登入、各类服务的问题发生时的记录、以及常态性的服务记录等等的记录目录,所以当你的系统有问题时,就需要来这个目录记录的档案数据中察看问题的所在啰!而 mail 的预设放置也是在这里,所以他是很重要的喔!
     
    • /usr/share/man, /usr/local/man:这两个目录为放置各类套件说明档的地方,例如你如果执行 man man,则系统会自动去找这两个目录下的所有说明文件,如果有相同的数据就会叫出来给你幽!
     

  • 一般主机可能会分配的磁盘情况
    好了,知道了 Linux 的档案权限,目前也知道了各个档案内可能摆放的数据是什么了,那么再来说说你的目录与磁盘分割之间的相关性。通常一般的大型主机都不会将所有的数据放置在一个磁盘中(就是只有一个『 / 』根目录),这有几个目的:
     
    1. 安全性考虑:你的系统通常是在 /usr/ 中,而个人数据则可能放置在 /home 当中,至于一些开机数据则放置在 /etc 当中。如果将所有的数据放在一起,当你的系统不小心被黑客破坏,或者不小心自己砍了一个小东西,则所有的咚咚也都跟着不见了.....这对于我们市井小民或许无所谓,再安装一次就好了,但是对于一些大型企业可不行这样!因此需要将数据分别放置于不同的磁盘中,会比较保险些。
       
    2. 便利性:如果你需要升级你的系统的话,是否需要重新 format 安装呢?有些数据例如 /home 里面的数据为个人用户的数据,似乎与系统无关!所以如果你将这些数据分别放置于不同的磁盘,则你要升级或者进行一些系统更动时,将比较有弹性。
     
    你或许可以将你的系统做成这样的 partition 分布:
     
    • /
      /boot
      /usr
      /home
      /var
     
    这是比较常见的磁盘分布情况,其中,
     
    • / 根目录可以分配约 256 MB 以内;
    • /boot 大概在 50 MB 就可以了,因为开机档案并不大;
    • /var 就至少需要 1GB 以上,因为你的 mail 、 proxy 预设的储存区都在这个目录中,除非你要将一些设定改变!
    • /home/usr 通常是最大的,因为你所安装的数据都是在 /usr/ 当中,而用户数据则放置在 /home 当中,因此通常书上都会建议你将所剩下的磁盘空间平均分配给这两个目录说!


    无论如何,每部主机的环境与功能用途都不相同,自然其磁盘的分配就会不太一样,因此,上面的设定您就看看就好,等您将整个网页内容全 K 完了,那么大概就知道怎样设定您的主机最恰当啦!接着下来,我们来谈一谈简单的档案与目录的管理了!


本章习题练习 ( 要看答案请将鼠标移动到『答:』底下的空白处,按下左键圈选空白处即可察看 )
  • 早期的 Unix 系统文件名最多允许 14 个字符,而新的 Unix 与 Linux 系统中,文件名最多可以容许几个字符?
    答:
    • 255个字符
  • 当一个档案属性为 –rwxrwxrwx 则表示这个档案的意义为?
    答:
    • 任何人皆可读取、可写入亦可删除。
  • 我需要将一个档案的属性改为 –rwxr-xr-- 请问该如何下达指令?
    答:
    • chmod 754 filename 或 chmod u=rwx,g=rx,o=r filename
  • 若我需要更改一个档案的拥有者与群组,该用什么指令?
    答:
    • chown, chgrp
  • Linux 传统的档案系统为何?此外,常用的 Journaling 档案格式有哪些?
    答:
    • ext2,
      Journaling 有 ext3 及 Reiserfs 等
  • 请问底下的目录与主要放置什么数据
    /etc/:
    /etc/rc.d/init.d:
    /boot:
    /usr/bin, /bin:
    /usr/sbin, /sbin:
    /dev:
    /var/log:
    答:
    • /etc/:几乎系统的所有设定档案均在此,尤其 passwd, shadow
      /etc/rc.d/init.d:系统开机的时候加载服务的 scripts 的摆放地点
      /boot:开机设定档,也是预设摆放核心 vmlinuz 的地方
      /usr/bin, /bin:一般执行档摆放的地方
      /usr/sbin, /sbin:系统管理员常用指令集
      /dev:摆放所有系统装置档案的目录
      /var/log:摆放系统登录档案的地方
  • 若一个档案的档名开头为『 . 』,例如 .bashrc 这个档案,代表什么?另外,如何显示出这个文件名与他的相关属性?
    答:
    • 有『 . 』为开头的为隐藏档,需要使用 ls –a 这个 –a 的参数才能显示出隐藏档案的内容,而使用 ls –al 才能显示出属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值