内容:
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 文件名
例:
[[email protected] ~]# touch dajuan ###创建一个名字为dajuan的空文件
mkdir
作用:创建目录
语法:mkdir 目录名 (加上-p参数可以递归创建)
例如:
[[email protected] ~]# mkdir harley ###创建名字为harley的文件夹 [[email protected] ~]# mkdir -p harley/xunbin/ylyq ###在harley文件夹下创建xunbin文件夹,然后在xunbin文件夹下再创建ylyp的文件夹
查看文件方法:
cat
作用:查看文件内容
语法:cat 文件名
例:
[[email protected] ~]# cat /etc/passwd ###查看passwd文件内容,直接全部打印到终端
more
作用:分页查看文件内容(一般用于查看文件内容比较多的文件)
语法:more 文件名
使用方法: 按下回车刷新一行,按下空格刷新一屏 按q 退出 (不可向上翻页)
less
作用:分页查看文件内容(一般用于查看文件内容比较多的文件)
语法:less 文件名
使用方法:使用光标键可以向上翻页
linux中more与less的区别
more:不支持后退,但几乎不需要加参数,空格键是向下翻页,Enter键是向下翻一行,在不需要后退的情况下比较方便。
less:支持前后翻滚,既可以向上翻页(pageup按键),也可以向下翻页(pagedown按键)。,空格键是向下翻页,Enter键是向下翻一行
head
作用:从第一行开始,查看文件
语法:head 【-n】文件名
参数:-n 数字 显示多少行 (如果不加-n参数,则默认显示前10行)
例:
[[email protected] ~]# 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行)
例:
[[email protected] ~]# tail -f /var/log/messages
Head和tail配合使用
例:
显示文件的第五行
[[email protected] ~]# head -5 /etc/passwd | tail -1 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
cp
作用:复制文件
语法:cp 【-r】 源文件 目标文件
参数:-r 包含子目录和文件
例:
[[email protected] ~]# cp /etc/passwd /root/ [[email protected] ~]# cp -r /boot/grub/ /opt/
rm
作用:删除文件或目录
语法: rm 【-r|-f】 文件或目录名
参数:-r 递归删除(可以删除目录和目录里面的东西)-f 强行删除
例:
[[email protected] ~]# rm -rf passwd
mv
作用:移动或重命名文件(如果用作重命名文件,则更新文件的时间戳)
语法:mv 源:文件或目录名 目标:文件或目录名(如果源和目标为同一目录则为重命名操作)
[[email protected] ~]# mv passwd qn
四、 恢复被误删除的文件
在生产环境下,建议大家尽量不用或者少用rm命令,如果确定不用的文件可以暂时放入一个定期清除内容的文件夹,但是如果不小心误删除了文件该怎么操作呢?
下面以rhel6,5操作系统为例,演示恢复误删除文件的恢复方法:
1、 准备测试分区和文件
[[email protected] ~]# 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重启系统
[[email protected] ~]# mkfs.ext4 /dev/sda4#格式化分区 [[email protected] ~]# mkdir /sda4#创建挂载点 [[email protected] ~]# mount /dev/sda4 /sda4/ #挂载分区 [[email protected] ~]# 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
准备测试文件
[[email protected] sda4]# cp /etc/passwd /sda4/ [[email protected] sda4]# cp /etc/hosts /sda4/ [[email protected] sda4]# mkdir -p a/b/c [[email protected] sda4]# cp /etc/passwd a/ [[email protected] sda4]# touch a/b/kong.txt
删除文件
[[email protected] sda4]# rm -rf a a.txt hosts passwd [[email protected] sda4]# ls lost+found
2、 卸载或以只读方式挂载误删除的分区
[[email protected] ~]# umount /dev/sda4 ###卸载分区 或 [[email protected] ~]# mount -o ro,remount /dev/sda4 /sda4/ 以只读方式重新挂载sda4分区 避免写入的新文件覆盖误删除文件的物理磁盘空间
3、在其他分区安装extundelete软件包(此软件可以恢复ext3和ext4文件系统)
[[email protected] ~]# tar jxvf extundelete-0.2.4.tar.bz2#解压软件包 [[email protected] ~]# cd extundelete-0.2.4 #进入软件目录 [[email protected] extundelete-0.2.4]# ./configure #配置 Configuring extundelete 0.2.4 configure: error: Can‘t find ext2fs library #配置报错
解决办法
[[email protected] extundelete-0.2.4]# uname –r #查看内核版本 2.6.32-431.el6.x86_64 [[email protected] extundelete-0.2.4]# rpm –ihv /mnt/Packages/e2fsprogs-devel-1.41.12-18.el6.x86_64.rpm #安装ext2fs库 [[email protected] extundelete-0.2.4]# ./configure #重新配置 [[email protected] extundelete-0.2.4]# make #编译 make -s all-recursive Making all in src extundelete.cc:571: warning: unused parameter ‘flags’ [[email protected] 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、恢复文件
[[email protected] ~]# 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进行恢复
[[email protected] test]# extundelete /dev/sda4 --restore-inode 12 ##恢复inode为12的文件 [[email protected] test]# ls RECOVERED_FILES/ file.12 [[email protected] test]# diff /etc/passwd RECOVERED_FILES/file.12 ##比较两个文件的差异如没有输出则表示两个文件相同
方法二:通过文件名进行恢复
[[email protected] test]# extundelete /dev/sda4 --restore-file passwd
方法三:通过目录进行恢复
[[email protected] test]# extundelete /dev/sda4 --restore-directory a
方法四:恢复所有文件
[[email protected] test]# extundelete /dev/sda4 --restore-all
学神-IT-教育51cto技术交流群:468845589 快来上我们公开课吧!
学神MK老师:1273815479
学神ZY老师:3054384936
学神教育1508班VIP学员立伟编译提供