您的位置:首页 > 运维架构 > Linux

【学神】1-2Linux基本文件管理

2015-11-10 12:41 597 查看
内容:
Linux系统目录构成
绝对/相对路径的概念
文件、目录操作命令
恢复被误删除的文件

实验环境:rhel6.5 x86_64

一、 linux系统目录的构成linux操作系统,一般都包含以下目录:
/ 通常称为根分区。所有的文件和目录皆由此开始。只有root用户对此目录拥有写权限。---/etc 配置文件 包含所有应用程序的配置文件,也包含启动、关闭某个特定程序的脚本,例如,
/etc/passwd,/etc/init.d/network等。---/boot 存放Linux系统启动时需要加载的文件。 (一般在另外一个磁盘分区里面保存) Kernel、grub等文件都存放在此。---/home 普通用户所有数据存放在这个目录下 ---/var 是一个可增长的目录,包含很经常变的文件。例如,/var/log(系统日志)、/var/lib (包文件) 、

---/root 管理员所有数据。 root用户的家目录 ---/tmp 临时文件存储位置 ---/usr usr表示的是unix software source
---/bin 命令 此目录包含二进制可执行文件。

---/sbin 系统命令 ,此目录中的命令主要供系统管理员使用,以进行系统维护。例如,iptables、reboot、fdisk等。/mnt - 挂载目录 挂载点,系统管理员可用于临时挂载文件系统。 /media ---/dev 包含设备文件。在Linux中,一切都被看做文件。终端设备、USB、磁盘等等都被看做文件,如/dev/sda。二、绝对/相对路径的概念
在日常的文件管理中,经常会用到绝对路径和相对路径,那么什么是绝对路径和相对路径呢?

绝对路径:我们知道linux系统中,所有的文件和目录都是以/目录开始,简单的讲,绝对路径就是由根目录开始,一步一步的写到实际文件存放的位置,例如:我需要访问passwd文件,绝对路径的写法就是/etc/passwd。

相对路径:不是由根开始,一步一步的写到实际文件存放的位置,而是由现在所处目录开始到目标目录的写法。例如:现在所处目录为/boot,目标目录为/boot/grub/,绝对路径的写法为cd /boot/grub/,而相对路径可以这些写cd grub/

三. 文件、目录操作命令在介绍操作命令之前,我们需要了解几个特殊的目录
. 代表本层目录
.. 代表上层目录
- 代表上一次工作的目录~ 代表目前用户的家目录
这些特殊目录配合相对路径使用,极大的提高了目录切换的速度
以上目录可以通过cd命令切换
例如:
切换至上层目录 cd ..
切换至上一次工作的目录 cd –
切换至家目录 cd ~ 或者直接cd

文件和文件夹常用操作命令 touch 作用:创建空文件语法: touch 文件名例:
[root@xuegod163 ~]# touch dajuan  ###创建一个名字为dajuan的空文件
mkdir作用:创建目录语法:mkdir 目录名 (加上-p参数可以递归创建)例如:
[root@xuegod163 ~]# mkdir harley    ###创建名字为harley的文件夹
[root@xuegod163 ~]# mkdir -p  harley/xunbin/ylyq  ###在harley文件夹下创建xunbin文件夹,然后在xunbin文件夹下再创建ylyp的文件夹
查看文件方法:cat作用:查看文件内容语法:cat 文件名例:
[root@xuegod163 ~]# cat /etc/passwd  ###查看passwd文件内容,直接全部打印到终端
more 作用:分页查看文件内容(一般用于查看文件内容比较多的文件)语法:more 文件名使用方法: 按下回车刷新一行,按下空格刷新一屏 按q 退出 (不可向上翻页) less作用:分页查看文件内容(一般用于查看文件内容比较多的文件)语法:less 文件名使用方法:使用光标键可以向上翻页
linux中more与less的区别more:不支持后退,但几乎不需要加参数,空格键是向下翻页,Enter键是向下翻一行,在不需要后退的情况下比较方便。less:支持前后翻滚,既可以向上翻页(pageup按键),也可以向下翻页(pagedown按键)。,空格键是向下翻页,Enter键是向下翻一行 head 作用:从第一行开始,查看文件语法:head 【-n】文件名参数:-n 数字 显示多少行 (如果不加-n参数,则默认显示前10行)例:
[root@xuegod163 ~]# head -5  /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
tail 作用:从第后一行开始,查看文件语法:tail 【-n|-f】 文件名参数:-n 显示多少行 -f 动态显示数据(不关闭)  常用来查看日志(如果不加-n参数,则默认显示后10行)例:
[root@xuegod163 ~]# tail -f /var/log/messages


Head和tail配合使用例:显示文件的第五行
[root@xuegod163 ~]# head -5   /etc/passwd  |  tail -1
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
cp 作用:复制文件语法:cp 【-r】 源文件 目标文件参数:-r 包含子目录和文件例:
[root@xuegod163 ~]# cp /etc/passwd  /root/
[root@xuegod163 ~]# cp  -r /boot/grub/   /opt/
rm 作用:删除文件或目录语法: rm 【-r|-f】 文件或目录名参数:-r 递归删除(可以删除目录和目录里面的东西)-f 强行删除例:
[root@xuegod163 ~]# rm -rf passwd
mv 作用:移动或重命名文件(如果用作重命名文件,则更新文件的时间戳)
语法:mv 源:文件或目录名 目标:文件或目录名(如果源和目标为同一目录则为重命名操作)
[root@xuegod163 ~]# mv passwd  qn
四、 恢复被误删除的文件在生产环境下,建议大家尽量不用或者少用rm命令,如果确定不用的文件可以暂时放入一个定期清除内容的文件夹,但是如果不小心误删除了文件该怎么操作呢?
下面以rhel6,5操作系统为例,演示恢复误删除文件的恢复方法:
1、 准备测试分区和文件
[root@xuegod163 ~]# fdisk /dev/sda                                     #准备测试分区

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').

Command (m for help): n                                                   #分区
Command action
e   extended
p   primary partition (1-4)
p                                                                            #创建主分区
Selected partition 4                                                         #选择分区号
First cylinder (1428-2610, default 1428):
Using default value 1428
Last cylinder, +cylinders or +size{K,M,G} (1428-2610, default 2610): +1G     #新建1G大小的分区

Command (m for help): p                                                     #查看分区信息

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000fff2

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        1301    10240000   83  Linux
/dev/sda3            1301        1428     1024000   82  Linux swap / Solaris
/dev/sda4            1428        1559     1052843+  83  Linux

Command (m for help): w                                                    #保存分区信息
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
分区完成可以使用partprobe或kpartx命令重新读取分区表(经过验证这两个命令在rhel6中不起作用)所以这里reboot重启系统

[root@xuegod163 ~]# mkfs.ext4  /dev/sda4#格式化分区
[root@xuegod163 ~]# mkdir /sda4#创建挂载点
[root@xuegod163 ~]# mount /dev/sda4 /sda4/         #挂载分区
[root@xuegod163 ~]# df –h#查看挂载状况
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       9.7G  3.8G  5.4G  42% /
tmpfs           2.0G  224K  2.0G   1% /dev/shm
/dev/sda1       194M   34M  151M  19% /boot
/dev/sr0        3.6G  3.6G     0 100% /mnt
/dev/sda4      1012M   34M  928M   4% /sda4

准备测试文件
[root@xuegod163 sda4]# cp  /etc/passwd  /sda4/
[root@xuegod163 sda4]# cp /etc/hosts  /sda4/
[root@xuegod163 sda4]# mkdir -p  a/b/c
[root@xuegod163 sda4]# cp /etc/passwd  a/
[root@xuegod163 sda4]# touch  a/b/kong.txt
删除文件
[root@xuegod163 sda4]# rm -rf a a.txt hosts passwd
[root@xuegod163 sda4]# ls
lost+found
2、 卸载或以只读方式挂载误删除的分区
[root@xuegod163 ~]# umount /dev/sda4    ###卸载分区
或
[root@xuegod163 ~]# mount  -o  ro,remount /dev/sda4 /sda4/ 以只读方式重新挂载sda4分区
避免写入的新文件覆盖误删除文件的物理磁盘空间

3、在其他分区安装extundelete软件包(此软件可以恢复ext3和ext4文件系统)
[root@xuegod163 ~]# tar jxvf extundelete-0.2.4.tar.bz2#解压软件包
[root@xuegod163 ~]# cd extundelete-0.2.4                                    #进入软件目录
[root@xuegod163 extundelete-0.2.4]# ./configure                             #配置
Configuring extundelete 0.2.4
configure: error: Can't find ext2fs library                                       #配置报错

解决办法
[root@xuegod163 extundelete-0.2.4]# uname –r                               #查看内核版本
2.6.32-431.el6.x86_64
[root@xuegod163 extundelete-0.2.4]# rpm –ihv
/mnt/Packages/e2fsprogs-devel-1.41.12-18.el6.x86_64.rpm                      #安装ext2fs库

[root@xuegod163 extundelete-0.2.4]# ./configure  #重新配置
[root@xuegod163 extundelete-0.2.4]# make   #编译
make -s all-recursive
Making all in src
extundelete.cc:571: warning: unused parameter ‘flags’
[root@xuegod163 extundelete-0.2.4]# make install   #安装
Making install in src
/usr/bin/install -c extundelete '/usr/local/bin'


4、 extundelete命令用法
extundelete [options] [action] device-file
其中,参数(options)有:

--version, -[vV],显示软件版本号。

--help,显示软件帮助信息。

--superblock,显示超级块信息。

--journal,显示日志信息。

--after dtime,时间参数,表示在某段时间之后被删的文件或目录。

--before dtime,时间参数,表示在某段时间之前被删的文件或目录。

动作(action)有:

--inode ino,显示节点“ino”的信息。

--block blk,显示数据块“blk”的信息。

--restore-inode ino[,ino,...],恢复命令参数,表示恢复节点“ino”的文件,恢复的文件会自动放在当前目录下的RESTORED_FILES文件夹中,使用节点编号作为扩展名。

--restore-file 'path',恢复命令参数,表示将恢复指定路径的文件,并把恢复的文件放在当前目录下的RECOVERED_FILES目录中。

--restore-files 'path',恢复命令参数,表示将恢复在路径中已列出的所有文件。

--restore-all,恢复命令参数,表示将尝试恢复所有目录和文件。

-j journal,表示从已经命名的文件中读取扩展日志。

-b blocknumber,表示使用之前备份的超级块来打开文件系统,一般用于查看现有超级块是不是当前所要的文件。

-B blocksize,通过指定数据块大小来打开文件系统,一般用于查看已经知道大小的文件。

在文件恢复成功后,extundelete命令默认会在执行命令的当前目录下创建一个RECOVERED_FILES目录,此目录用于存放恢复出来的文件,所以执行extundelete命令的当前目录必须是可写的。
extundelete命令不能恢复空文件和空目录

5、恢复文件
[root@xuegod163 ~]# extundelete /dev/sda4 --inode 2     #显示/dev/sda4分区的文件信息(2为根分区inode值)
………………
File name                                       | Inode number | Deleted status
.                                                 2
..                                                2
lost+found                                        11
passwd                                            12             Deleted
hosts                                             13             Deleted
a                                                 7313           Deleted
a.txt                                             17             Deleted

恢复方法:
方法一:通过inode进行恢复
[root@xuegod163 test]# extundelete /dev/sda4  --restore-inode 12   ##恢复inode为12的文件
[root@xuegod163 test]# ls RECOVERED_FILES/
file.12
[root@xuegod163 test]# diff /etc/passwd RECOVERED_FILES/file.12    ##比较两个文件的差异如没有输出则表示两个文件相同

方法二:通过文件名进行恢复
[root@xuegod163 test]# extundelete /dev/sda4  --restore-file  passwd

方法三:通过目录进行恢复
[root@xuegod163 test]# extundelete /dev/sda4  --restore-directory   a

方法四:恢复所有文件
[root@xuegod163 test]# extundelete /dev/sda4  --restore-all


学神-IT-教育51cto技术交流群:468845589 快来上我们公开课吧! 学神MK老师:1273815479 学神ZY老师:3054384936

学神教育1508班VIP学员立伟编译提供
本文出自 “学神IT教育-讲师MK” 博客,请务必保留此出处http://xuegodlinux.blog.51cto.com/10844319/1711370
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: