RHEL54文件系统和TAR工具.docx

上传人:b****5 文档编号:8168945 上传时间:2023-01-29 格式:DOCX 页数:13 大小:19.11KB
下载 相关 举报
RHEL54文件系统和TAR工具.docx_第1页
第1页 / 共13页
RHEL54文件系统和TAR工具.docx_第2页
第2页 / 共13页
RHEL54文件系统和TAR工具.docx_第3页
第3页 / 共13页
RHEL54文件系统和TAR工具.docx_第4页
第4页 / 共13页
RHEL54文件系统和TAR工具.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

RHEL54文件系统和TAR工具.docx

《RHEL54文件系统和TAR工具.docx》由会员分享,可在线阅读,更多相关《RHEL54文件系统和TAR工具.docx(13页珍藏版)》请在冰豆网上搜索。

RHEL54文件系统和TAR工具.docx

RHEL54文件系统和TAR工具

RHEL5.4文件系统和TAR工具

关于linux下面文件系统的深究和tar工具的使用讨论,

分区和文件系统

磁盘驱动器被划分成分区,分区被格式化成文件系统(filesystem),从而使用户能够去保存数据。

Linux下面的默认文件系统是:

ext3(第三级扩展linux文件系统,thirdextendedlinuxfilesystem)。

其他常见的文件系统:

Ext2和msdos(典型用于软盘)

Iso9660        (典型拥有光盘)

GFS和GFS2(典型用于SAN)主要用来做集群级的文件系统

Inodes(节点)

Inode(indexnode索引节点)

Inodestable包含了ext2和ext3文件系统的所有属性,

一个文件其实是由两部分组成:

节点表和数据区。

节点表里面主要存放文件的类型,权限,UID,GID,Linkcount,大小和时间戳,数据存放在磁盘的什么位置。

数据区里面就是存放真正的数据。

一个inodes的大小大概为128B,一个文件至少要占有1个inodes。

通过tune2fs-l/dev/sda7可以查看这个分区的inodesize,inodecount,blockcount。

我们知道,计算机在识别一个用户是通过UID来识别的,识别一个进程是通过进程号来识别的,那么,同样,计算机识别一个文件是通过一个inodenumber来识别文件的。

而文件名只是给人的识别的。

如何查看文件的节点号呢?

#ls-li

[root@localhost~]#

[root@localhost~]#ls-li

total56

533587-rw-------1rootroot1050Mar602:

15anaconda-ks.cfg

919063drwxr-xr-x2rootroot4096Mar602:

43Desktop

524290-rw-r--r--1rootroot29302Mar602:

15install.log

524291-rw-r--r--1rootroot3738Mar602:

15install.log.syslog

[root@localhost~]#

前面的一串数字就是文件的节点号,

其实我们的节点号是在分区创建的时候就已经分配好了的。

下面我们来学习复制,剪切,删除对文件inode的影响。

1.     复制对文件inode的影响,

现在先来查看一下,

[root@localhost~]#

[root@localhost~]#cd/boot/

[root@localhostboot]#

[root@localhostboot]#ls-lifile

6030-rw-r--r--1rootroot0Mar613:

26file

[root@localhostboot]#

可以看到,这个文件的节点号是6030,现在我们将它复制到另外一个分区,

[root@localhost~]#

[root@localhost~]#cd/boot/

[root@localhostboot]#

[root@localhostboot]#cpfile/var/

[root@localhostboot]#

[root@localhostboot]#cd/var/

[root@localhostvar]#

[root@localhostvar]#ls-lifile

2115361-rw-r--r--1rootroot0Mar613:

27file

[root@localhostvar]#

将这个文件复制到/var分区下面后,这个文件的inodenumber就改变了。

当一个文件从一个分区复制到另外一个分区的时候,系统就分配了另外一个inode给这个文件。

刚才我们是将一个文件从一个分区复制到另外一个分区,现在我们在同一个分区里面复制文件,文件的节点号会不会发生改变。

[root@localhost~]#

[root@localhost~]#cd/boot/

[root@localhostboot]#

[root@localhostboot]#ls-lifile

6030-rw-r--r--1rootroot0Mar613:

26file

[root@localhostboot]#

[root@localhostboot]#cpfile/boot/grub/

[root@localhostboot]#

[root@localhostboot]#cdgrub/

[root@localhostgrub]#ls-lifile

22091-rw-r--r--1rootroot0Mar613:

29file

[root@localhostgrub]#

可以看到,刚才这个文件的节点号是6030,现在就变成了22091了。

在同一个分区里面复制文件,这个文件的节点号也是会发生改变的。

因为在这个分区有两份相同的文件,只是文件的内容相同,但是文件的inode属性却是不一样的。

2.剪切对文件inode的影响

现在先来查看一下,

[root@localhost~]#

[root@localhost~]#cd/boot/

[root@localhostboot]#

[root@localhostboot]#ls-lifile

6030-rw-r--r--1rootroot0Mar613:

26file

[root@localhostboot]#

可以看到,这个文件的节点号是6030,现在我们将这个文件在同个分区里剪切一份。

[root@localhost~]#

[root@localhost~]#cd/boot/

[root@localhostboot]#

[root@localhostboot]#ls-lifile

6030-rw-r--r--1rootroot0Mar613:

26file

[root@localhostboot]#

[root@localhostboot]#mvfile/boot/test/

[root@localhostboot]#

[root@localhostboot]#cdtest/

[root@localhosttest]#

[root@localhosttest]#ls-lifile

6030-rw-r--r--1rootroot0Mar613:

26file

[root@localhosttest]#

可以看到,这个文件节点号是没有改变的。

当在同一个分区里面移到文件,文件的节点号没有发生改变。

刚才我们是在同一个分区里面移到文件,现在我们将文件在不同的分区当中移到,文件的节点号会不会发生改变呢。

[root@localhost~]#

[root@localhost~]#cd/boot/test/

[root@localhosttest]#

[root@localhosttest]#ls-lifile

6030-rw-r--r--1rootroot0Mar613:

26file

[root@localhosttest]#

[root@localhosttest]#mv/boot/test/file/var/ftp/pub/

[root@localhosttest]#

[root@localhosttest]#cd/var/ftp/pub/

[root@localhostpub]#ls-lifile

325584-rw-r--r--1rootroot0Mar613:

26file

[root@localhostpub]#

可以看到,这个文件的节点号是肯定会变的。

3.     删除对文件inode的影响

[root@localhost~]#

[root@localhost~]#cd/boot/

[root@localhostboot]#

[root@localhostboot]#ls-lifile

6030-rw-r--r--1rootroot0Mar613:

44file

[root@localhostboot]#

[root@localhostboot]#rm-rffile

[root@localhostboot]#

现在我们把file这个文件给删除了,其实我们只是将file这个文件的节点表给删除了,其实我们的数据都还在。

这也就是为什么当我们删除一个文件,这个文件还可以被找回来的原因。

当然如果我们在到这个分区里面写入数据,那么原来的数据就会被覆盖。

[root@localhostboot]#

[root@localhostboot]#touchfile1

[root@localhostboot]#

[root@localhostboot]#ls-lifile1

6030-rw-r--r--1rootroot0Mar613:

49file1

[root@localhostboot]#

现在我们又新建了一个文件file1,这个文件的节点号也是6030,它就已经覆盖了以前的数据的节点号。

那么以前的数据就找不回来了。

总结:

复制:

在同一个分区,节点号改变。

在不同的分区,节点号改变。

剪切:

在同一个分区,节点号不变。

在不同的分区,节点号改变。

删除:

只是删除了文件的节点表,数据没有被真正删除,只有当往这个分区在写入数据的时候,才会覆盖原来的数据。

关于硬链接和软链接

1.     硬链接(hardlinks)

硬链接文件完全等同于原文件,原文件名和连接文件名都指向相同的物理地址。

不可以跨文件系统,也不可以建立目录的硬链接。

如何创建硬链接呢

#ln文件名链接名

[root@localhost~]#

[root@localhost~]#cd/boot/

[root@localhostboot]#

[root@localhostboot]#ls-liinittab

6033-rw-r--r--1rootroot1666Mar614:

06inittab

[root@localhostboot]#pwd

/boot

[root@localhostboot]#lninittab/boot/grub/inittab.bak

[root@localhostboot]#

[root@localhostboot]#cd/boot/grub/

[root@localhostgrub]#

[root@localhostgrub]#ls-liinittab.bak

6033-rw-r--r--2rootroot1666Mar614:

06inittab.bak

[root@localhostgrub]#

可以看到,我们给inittab这个文件创建了一个硬链接initab.bak这个文件。

这两个文件的节点号都是一样的。

现在我们来修改原文件,

在修改之前我们来看看这个两个文件是不是一样的,使用diff工具。

[root@localhost~]#

[root@localhost~]#diff/boot/inittab/boot/grub/inittab.bak

[root@localhost~]#

OK,这两个文件的内容是一样的。

现在我们来修改原文件,

[root@localhost~]#

[root@localhost~]#cd/boot/

[root@localhostboot]#

[root@localhostboot]#viminittab

[root@localhostboot]#

我已经对原文件做了修改了。

现在在来看看链接文件是否也跟着改变了

[root@localhost~]#

[root@localhost~]#diff/boot/inittab/boot/grub/inittab.bak

[root@localhost~]#

OK,这两个文件还是一样的,也就是说我们改变了原文件的内容,链接文件也是会跟着发生改变的。

当然,如果在链接文件里面添加内容,那么原文件也会跟着发生改变的。

现在如果我们将原文件个删除了,那么链接还会存在吗?

[root@localhost~]#

[root@localhost~]#cd/boot/

[root@localhostboot]#

[root@localhostboot]#rm-rfinittab

[root@localhostboot]#

[root@localhostboot]#cd/boot/grub/

[root@localhostgrub]#

[root@localhostgrub]#ls|grepinittab.bak

inittab.bak

[root@localhostgrub]#

OK,可以看到,当我们删除原文件的时候,链接文件也还是存在的。

因为原文件和链接文件都有节点表,这两个节点表都是指向真正的数据区的,当我们删除原文件的时候,只是删除了原文件的节点表,而没有删除真正的数据,而我们的链接文件也是指向真正的数据区的,所以链接文件存在也是正常的。

接下来,在做一个试验。

[root@localhost~]#

[root@localhost~]#cd/boot/

[root@localhostboot]#

[root@localhostboot]#ls-lifstab

6034-rw-r--r--1rootroot684Mar615:

43fstab

[root@localhostboot]#

在/boot分区下面有个fstab文件,现在我们为这个文件做一个硬链接。

[root@localhost~]#

[root@localhost~]#ln/boot/fstab/tmp/

ln:

creatinghardlink`/tmp/fstab'to`/boot/fstab':

Invalidcross-devicelink

[root@localhost~]#

但是,现在系统报错了,他提示我们硬连接是不可以跨分区的。

2.     软链接(softlinks)

软链接文件相当于为原文件建立了一个快捷方式,可以跨文件系统,也可以为目录建立。

软链接和硬链接不同,软链接有自己的inode,类似windows下的快捷方式。

如何创建软链接呢?

#ln-s文件名链接名

[root@localhost~]#

[root@localhost~]#cd/boot/

[root@localhostboot]#

[root@localhostboot]#ls-lifstab

6034-rw-r--r--1rootroot684Mar615:

43fstab

[root@localhostboot]#

[root@localhostboot]#ln-s/boot/fstab/boot/grub/fstab.bak

[root@localhostboot]#

[root@localhostboot]#cd/boot/grub

[root@localhostgrub]#

[root@localhostgrub]#ls-lifstab.bak

22106lrwxrwxrwx1rootroot11Mar615:

56fstab.bak->/boot/fstab

[root@localhostgrub]#

现在我为/boot下面的fstab文件做了一个硬链接/boot/grub/fstab.bak文件。

当我们修改原文件里面的数据,我们链接文件也会发生改变。

修改链接文件的数据,原文件也会发生改变。

这点和硬链接是一样的。

现在我们删除原文件,链接文件还可以打开吗?

[root@localhost~]#

[root@localhost~]#rm-rf/boot/fstab

[root@localhost~]#

[root@localhost~]#cd/boot/grub

[root@localhostgrub]#

[root@localhostgrub]#ls-lifstab.bak

22106lrwxrwxrwx1rootroot11Mar615:

56fstab.bak->/boot/fstab

[root@localhostgrub]#

很显然,当我们删除原文件以后,我们的链接文件就坏掉了。

因为软连接的节点号并没有指向真正的数据,而是指向原文件,当原文件的节点表被删除了,我们的软连接也打不开了。

刚才我们的硬链接并不能够跨分区做,但是我们的软连接没有限制。

[root@localhost~]#

[root@localhost~]#cd/boot/

[root@localhostboot]#

[root@localhostboot]#ln-s/boot/fstab/tmp/fstab.bak

[root@localhostboot]#cd/tmp/

[root@localhosttmp]#ls-lifstab.bak

131180lrwxrwxrwx1rootroot11Mar616:

12fstab.bak->/boot/fstab

[root@localhosttmp]#

我们的软链接是可以跨分区的。

总结:

硬链接不可以跨分区,不可以对目录做。

但是硬链接的原文件和链接文件的节点表都指向真正的数据区。

删除原文件,链接文件也可以打开。

软链接可以跨分区,也可以对目录做。

但是软链接的链接文件的节点表是指向原文件的,当原文件删除后,链接文件就坏掉了。

关于linux系统中文件类型

Ls-l的符合文件类型

-                                                       常规文件

d目录

l符号链接

b块设备文件

c字符特殊文件

p别命名的管道

s套接字

关于linux下面检查空闲空间

#df-h

[root@localhost~]#

[root@localhost~]#df-h

FilesystemSizeUsed     Avail     Use%      Mountedon

/dev/sda33.9G2.3G1.5G     61%         /

/dev/sda6494M11M458M3%          /home

/dev/sda215G11G2.7G81%         /var

/dev/sda199M21M74M22%        /boot

tmpfs217M0217M0%          /dev/shm

none217M104K217M1%           /var/lib/xenstored

/dev/hdc2.8G2.8G0           100%        /media/RHEL_5.4i386DVD

[root@localhost~]#

查看磁盘的空间用量。

#du-h

[root@localhost~]#

[root@localhost~]#du-h/tmp/

4.0K/tmp/.ICE-unix

4.0K/tmp/.font-unix

8.0K/tmp/orbit-root

4.0K/tmp/.X11-unix

8.0K/tmp/gconfd-root/lock

12K/tmp/gconfd-root

60K/tmp/

[root@localhost~]#

这条命令会显示/tmp目录下面每个文件的大小。

可以加上s参数,就会汇总的意思,只显示/tmp目录的大小。

[root@localhost~]#

[root@localhost~]#du-sh/tmp/

60K/tmp/

[root@localhost~]#

关于linux下面挂载各种设备方法

挂载(mounting):

意味着使外来的文件系统看起来如同是主目录树的一部分。

访问前,介质必须被挂载

摘除时,介质必须被卸载

1.     挂载光盘和DVD

#Mount/dev/chrom/media

Eject命令用来卸载并弹出磁盘

2.     挂载USB设备

#mount/dev/sdb1/mnt

在linux如何卸载呢?

我们使用Umount命令来卸载挂载设备,

#Umount/mnt(挂载点)

如何使用TAR工具来进行压缩打包

1.     在linux下面如何打包

#tar-cvf/tmp/etc.tar/etc

-c创建打包

-v查看过程

-f指定打包文件或设备

[root@localhost~]#

[root@localhost~]#tar-cvf/tmp/etc.tar/etc/

[root@localhost~]#

[root@localhost~]#

[root@localhost~]#cd/tmp/

[root@localhosttmp]#

[root@localhosttmp]#lletc.tar

-rw-r--r--1rootroot1095680Mar617:

44etc.tar

[root@localhosttmp]#

这个就是我们打包出来的文件etc.tar。

打包只是将这些文件打包在一起,并不压缩,也就是不会减小大小。

2.     在linux中进行压缩文件

#gzipetc.tar

[root@localhosttmp]#

[root@localhosttmp]#gzipetc.tar

[root@localhosttmp]#ll-hetc.tar.gz

-rw-r--r--1rootroot170KMar617:

44etc.tar.gz

[root@localhosttmp]#

我们就将刚才打包出来的文件给压缩了,这个文件就变成了tar.gz了,而且这个文件的大小也明显减小了。

刚才我们是使用gzip的工具来

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1