内容:
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/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp: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 -1lp: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 1428Last 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 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x0000fff2 Device Boot Start End Blocks Id System/dev/sda1 * 1 26 204800 83 LinuxPartition 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 atthe 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]# lslost+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.4configure: 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-recursiveMaking all in srcextundelete.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.. 2lost+found 11passwd 12 Deletedhosts 13 Deleteda 7313 Deleteda.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学员立伟编译提供