Linux基本文件管理
本节所讲内容:
Linux系统目录结构
相对/绝对路径
创建/复制/删除文件
rm -rf / 意外事故
查看文件内容
xfs文件系统的备份和恢复
extundelete恢复ext4文件系统中误删的文件
Linux系统目录结构
/ 通常称为根分区。所有的文件和目录皆由此开始。只有root用户对此目录拥有写权限。
---/etc 配置文件 包含所有应用程序的配置文件,也包含启动、关闭某个特定程序的脚本,例如,
/etc/passwd,/etc/init.d/network等。
---/boot存放Linux系统启动时需要加载的文件。 (一般在另外一个磁盘分区里面保存) Kernel、grub等文件都存放在此。
---/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。
---/home 普通用户所有数据存放在这个目录下
---/proc
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里。
---/lib
这个目录里存放着系统最基本的动态链接共享库,其作用类似于Windows里的.dll文件。几乎所有的应用程序都须要用到这些共享库。
绝对路径/相对路径:
[[email protected]]# cd /boot/
[[email protected]]# cd grub/
表示当前目录
创建/查看/复制/删除 文件和文件夹
创建文件和文件夹
touch
作用:常用来创建空文件
语法: touch 文件名
[[email protected] ~]# touch momo
mkdir
作用:创建目录
语法:mkdir 目录名
[[email protected]~]# mkdir sljz
[[email protected]~]# mkdir -p sljz/syex/xbk
-p连同父目录一起创建
[[email protected] ~]# touch a
[[email protected] ~]# mkdir a
mkdir: cannot create directory`a‘: File exists
查看文件方法:
cat
作用:查看文件内容
语法:cat 文件名
more 查看文件名字
例:
more /etc/passwd
按下回车刷新一行,按下空格刷新一屏
q 退出
less 查看文件名字
q 退出
使用光标键可以向上翻页
linux中more与less的区别
more:不支持后退,但几乎不需要加参数,空格键是向下翻页,Enter键是向下翻一行,在不需要后退的情况下比较方便。
less:支持前后翻滚,既可以向上翻页(pageup按键),也可以向下翻页(pagedown按键)。,空格键是向下翻页,Enter键是向下翻一行
head 从第一行开始,查看文件,默认显示前10行
-n 数字 显示多少行
[[email protected] ~]# head -3/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
tail 从第后一行开始,查看文件,默认显示最后10行
-n 显示多少行
-f 动态显示数据(不关闭) 常用来查看日志
[[email protected]~]# tail -f /var/log/messages
Nov26 01:59:46 xuegod163 dbus[918]: [system] Activating via systemd: servicename=‘net.reactivated.Fprint‘ unit=‘fprintd.service‘
Nov26 01:59:46 xuegod163 systemd: Starting Fingerprint Authentication Daemon...
Nov26 01:59:46 xuegod163 dbus-daemon: dbus[918]: [system] Successfully activatedservice ‘net.reactivated.Fprint‘
显示文件的第五行
[[email protected]~]# head -5 /etc/passwd | tail -1
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
复制文件:
cp
作用:复制文件
语法:cp 源文件 目标文件
[[email protected]~]# cp /etc/passwd /root/
-r 包含子目录和文件 。
[[email protected] ~]# cp -r /boot/grub/ /opt/
删除文件和文件夹
rm
作用:删除文件或目录
语法: rm -rf 文件或目录名
-r 递归删除(可以删除目录和目录里面的东西)
-f 强行删除
[[email protected]~]# rm -rf passwd
重命名:
mv
语法:mv 源:文件或目录名 目标:文件或目录名
[[email protected] ~]# mvpasswd xiaochuan
实战:xfs文件系统的备份和恢复
XFS提供了 xfsdump 和 xfsrestore 工具协助备份XFS文件系统中的数据。xfsdump 按inode顺序备份一个XFS文件系统。与传统的UNIX文件系统不同,XFS不需要在dump前被卸载;对使用中的XFS文件系统做dump就可以保证镜像的一致性。这与XFS对快照的实现不同,XFS的dump和restore的过程是可以被中断然后继续的,无须冻结文件系统。xfsdump 甚至提供了高性能的多线程备份操作——它把一次dump拆分成多个数据流,每个数据流可以被发往不同的目的地。
首先准备测试文件
[[email protected] ~]#cp/etc/passwd /sda3
[[email protected] ~]#mkdir/sda3/test
1)对整个分区进行备份
[[email protected] ~]#xfsdump -f /opt/dump_sda3 /sda3
注意:备份的设备这里不能写成/sda3/
xfsdump: using filedump (drive_simple) strategy
xfsdump: version 3.1.4(dump format 3.0) - type ^C for status and control
============================= dump labeldialog ==============================
please enter label forthis dump session (timeout in 300 sec)
-> dump_sda3
#指定备份标签
session label entered:"dump_sda3"
--------------------------------- end dialog---------------------------------
xfsdump: level 0 dumpof xuegod163.cn:/sda3
xfsdump: dump date: TueNov 10 21:29:47 2015
xfsdump: session id:df2e3d9c-3217-4fba-858c-d22159d5a901
xfsdump: session label:"dump_sda3"
xfsdump: ino map phase1: constructing initial dump list
xfsdump: ino map phase2: skipping (no pruning necessary)
xfsdump: ino map phase3: skipping (only one dump stream)
xfsdump: ino mapconstruction complete
xfsdump: estimated dumpsize: 25536 bytes
xfsdump:/var/lib/xfsdump/inventory created
============================= media labeldialog =============================
please enter label formedia in drive 0 (timeout in 300 sec)
-> media0
#指定设备标签
media label entered:"media0"
--------------------------------- end dialog---------------------------------
xfsdump: creating dumpsession media file 0 (media 0, file 0)
xfsdump: dumping inomap
xfsdump: dumpingdirectories
xfsdump: dumpingnon-directory files
xfsdump: ending mediafile
xfsdump: media filesize 23720 bytes
xfsdump: dump size(non-dir files) : 2080 bytes
xfsdump: dump complete:12 seconds elapsed
xfsdump: Dump Summary:
xfsdump: stream 0 /opt/dump_sda3 OK (success)
xfsdump: Dump Status:SUCCESS
非交互式进行备份
[[email protected] ~]#xfsdump -f /opt/dump_sda3 /sda3 -Ldump_sda3 -M media0
针对指定文件或目录进行备份
[[email protected]~]# xfsdump -f /opt/dump_sda3_a -s test/sda3 -L dump_sda3_a -M media1
注意:a /sda3中间有空格,前后都不能加“/”
查看备份文件是否生成
[[email protected] ~]# ls/opt/
dump_sda3 dump_sda3_test rh
克隆目录到另外一个目录
[[email protected] ~]#mkdir /data
[[email protected] ~]#xfsdump - /sda3 | xfsrestore - /data/
克隆指定的目录
[[email protected]~]# xfsdump --s test /sda3 |xfsrestore - /data
查看备份信息
[[email protected]]# xfsdump -I
file system 0:
fs id: 4df2c5b9-98c2-48c0-895f-227c9b816f68
session 0:
mount point:xuegod163.cn:/sda3
device: xuegod163.cn:/dev/sda3
time: Tue Nov 10 21:29:47 2015
session label:"dump_sda3"
session id: df2e3d9c-3217-4fba-858c-d22159d5a901
level: 0
resumed: NO
subtree: NO
streams:1
stream 0:
pathname: /opt/dump_sda3
start: ino 131 offset 0
end: ino 132 offset 0
interrupted: NO
media files: 1
media file 0:
mfile index: 0
mfile type: data
mfile size: 23720
mfile start: ino 131 offset 0
mfile end: ino 132 offset 0
media label: "media0"
media id: 2f7dd88f-1aca-4605-a14b-14bab8ea799b
文件系统恢复
首先,模拟数据被删除
[[email protected]~]# rm -rf /sda3/*
恢复
[[email protected]~]# xfsrestore -f /opt/dump_sda3 /sda3/
只恢复单个的目录或文件
[[email protected] ~]#xfsrestore -f /opt/dump_sda3_test -s test /sda3
恢复之前查看备份文件的内容
[[email protected]~]# xfsrestore -f /opt/dump_sda3 –t
没有基础的同学了解【redhat6.5】
实战:恢复误删除的文件
exetundelete
首先、上传软件包
用xshell进行上传
[[email protected] ~]# rpm -ihv/mnt/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm
warning: /mnt/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm:Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing... ########################################### [100%]
package lrzsz-0.12.20-27.1.el6.x86_64 is already installed
rz上传
sz下载
安装extundelete软件包
[[email protected] ~]# tar jxvfextundelete-0.2.4.tar.bz2 #解压
[[email protected] ~]# cdextundelete-0.2.4
[[email protected]]# ./configure
Configuring extundelete 0.2.4
configure: error: Can‘t find ext2fslibrary
解决办法
[[email protected]]# uname -r
2.6.32-431.el6.x86_64
[[email protected]]# rpm –ihv
/mnt/Packages/e2fsprogs-devel-1.41.12-18.el6.x86_64.rpm
[[email protected]]# ./configure #配置
[[email protected]]# make #编译
make -s all-recursive
Making all in src
extundelete.cc:571: warning:unused parameter ‘flags’
[[email protected]]# make install #安装
Making install in src
/usr/bin/install -c extundelete‘/usr/local/bin‘
准备测试分区
[[email protected] ~]# fdisk/dev/sda
WARNING: DOS-compatible modeis 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
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 oncylinder 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 beenaltered!
Calling ioctl() to re-readpartition table.
WARNING: Re-reading the partitiontable failed with error 16: Device or resource busy.
The kernel still uses the oldtable. The new table will be used at
the next reboot or after yourun partprobe(8) or kpartx(8)
Syncing disks.
reboot重启系统
[[email protected] ~]#mkfs.ext4 /dev/sda4 #格式化分区
[[email protected] ~]# mkdir/sda4 #创建挂载点
[[email protected] ~]# mount/dev/sda4 /sda4/ #挂载分区
[[email protected] ~]# df –h #查看挂载状况
FilesystemSize 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] ~]# cp/etc/passwd /sda4/
[[email protected] ~]# cp/etc/hosts /sda4/
[[email protected] ~]# mkdir -p/sda4/a/b/c
[[email protected] ~]# cp/etc/passwd /sda4/a/
[[email protected] ~]# touch/sda4/a/b/kong.txt
删除文件
[[email protected] ~]# cd /sda4/
[[email protected] sda4]# ls
a hostslost+foundpasswd
[[email protected] sda4]# rm -rfa hosts passwd
卸载要恢复的分区或者以只读的方式进行挂载
[[email protected] ~]# umount/dev/sda4
恢复文件
查看要恢复分区的文件删除状态信息
[[email protected] ~]#extundelete /dev/sda4 --inode 2
………………
File name | Inodenumber | 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
[[email protected] test]# lsRECOVERED_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
通过extundelete命令不能恢复空文件和空目录
学习过程中如果问题,请留言。更多内容请加:
学神IT-linux讲师-RM老师QQ:2805537762
学神IT-戚老师QQ:3341251313
学神IT-旭斌QQ:372469347
学神IT教育RHEL7交流群:468845589