Linux文件管理和恢复误删除的文件

手册/FAQ (616) 2015-11-29 10:07:03

目录篇:

      Linux系统目录结构

      相对/绝对路径

      创建/复制/删除文件

      rm -rf / 意外事故

      查看文件内容

      xfs文件系统的备份和恢复

      extundelete恢复ext4文件系统中误删的文件

 

(1)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文件。几乎所有的应用程序都须要用到这些共享库。

 

(2)绝对路径/相对路径:

[root@xuegod163etc]# cd /boot/

[root@xuegod163boot]# cd grub/

  表示当前目录

(3)创建/查看/复制/删除 文件和文件夹

 

创建文件和文件夹

touch 

作用:常用来创建空文件

语法: touch 文件名

[root@xuegod163 ~]# touch momo

 

mkdir

作用:创建目录

语法:mkdir 目录名

[root@xuegod163~]# mkdir sljz

[root@xuegod163~]# mkdir -p  sljz/syex/xbk

-p连同父目录一起创建

 

[root@xuegod163 ~]# touch a

[root@xuegod163 ~]# 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 数字   显示多少行

[root@xuegod163 ~]# 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  动态显示数据(不关闭)  常用来查看日志

[root@xuegod163~]# 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'

 

显示文件的第五行

[root@xuegod163~]# head -5 /etc/passwd  | tail -1

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

 

复制文件:

cp

作用:复制文件

语法:cp 源文件 目标文件

[root@xuegod163~]# cp /etc/passwd  /root/

-r 包含子目录和文件  。

[root@xuegod163 ~]# cp  -r /boot/grub/   /opt/

删除文件和文件夹

 

(4)rm -rf / 意外事故

rm 

作用:删除文件或目录

语法: rm -rf  文件或目录名

-r  递归删除(可以删除目录和目录里面的东西)

-f  强行删除

[root@xuegod163~]# rm -rf passwd

 

重命名:

mv 

语法:mv 源:文件或目录名    目标:文件或目录名

[root@xuegod163 ~]# mvpasswd  xiaochuan

 

(5)实战:xfs文件系统的备份和恢复

 

XFS提供了 xfsdump 和 xfsrestore 工具协助备份XFS文件系统中的数据。xfsdump 按inode顺序备份一个XFS文件系统。与传统的UNIX文件系统不同,XFS不需要在dump前被卸载;对使用中的XFS文件系统做dump就可以保证镜像的一致性。这与XFS对快照的实现不同,XFS的dump和restore的过程是可以被中断然后继续的,无须冻结文件系统。xfsdump 甚至提供了高性能的多线程备份操作——它把一次dump拆分成多个数据流,每个数据流可以被发往不同的目的地。

 

首先准备测试文件

[root@xuegod163 ~]#cp/etc/passwd  /sda3

[root@xuegod163 ~]#mkdir/sda3/test

 

1)对整个分区进行备份

[root@xuegod163 ~]#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

 

 

非交互式进行备份

[root@xuegod163 ~]#xfsdump -f /opt/dump_sda3 /sda3  -Ldump_sda3 -M media0

 

针对指定文件或目录进行备份

[root@xuegod163~]# xfsdump -f /opt/dump_sda3_a -s  test/sda3  -L dump_sda3_a -M media1

注意:a  /sda3中间有空格,前后都不能加“/”

 

查看备份文件是否生成

[root@xuegod163 ~]# ls/opt/

dump_sda3  dump_sda3_test  rh

 

克隆目录到另外一个目录

[root@xuegod163 ~]#mkdir /data

[root@xuegod163 ~]#xfsdump - /sda3  | xfsrestore  - /data/

克隆指定的目录

[root@xuegod163~]# xfsdump --s test /sda3 |xfsrestore - /data

 

查看备份信息

[root@xuegod163data]# 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

 

文件系统恢复

首先,模拟数据被删除

[root@xuegod163~]# rm -rf /sda3/*

恢复

[root@xuegod163~]# xfsrestore -f /opt/dump_sda3 /sda3/

只恢复单个的目录或文件

[root@xuegod163 ~]#xfsrestore -f /opt/dump_sda3_test -s test /sda3

 

恢复之前查看备份文件的内容

[root@xuegod163~]# xfsrestore  -f /opt/dump_sda3 –t

 

 

没有基础的同学了解【redhat6.5】

实战:恢复误删除的文件

exetundelete

首先、上传软件包

用xshell进行上传

[root@xuegod163 ~]# 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软件包

[root@xuegod163 ~]# tar jxvfextundelete-0.2.4.tar.bz2                     #解压

[root@xuegod163 ~]# cdextundelete-0.2.4

[root@xuegod163extundelete-0.2.4]# ./configure

Configuring extundelete 0.2.4

configure: error: Can't find ext2fslibrary

 

解决办法

[root@xuegod163extundelete-0.2.4]# uname -r

2.6.32-431.el6.x86_64

[root@xuegod163extundelete-0.2.4]# rpm –ihv   

/mnt/Packages/e2fsprogs-devel-1.41.12-18.el6.x86_64.rpm

 

[root@xuegod163extundelete-0.2.4]# ./configure                             #配置

[root@xuegod163extundelete-0.2.4]# make                                     #编译

make -s all-recursive

Making all in src

extundelete.cc:571: warning:unused parameter ‘flags’

[root@xuegod163extundelete-0.2.4]# make install                           #安装

Making install in src

  /usr/bin/install -c extundelete'/usr/local/bin'

 

准备测试分区

[root@xuegod163 ~]# 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重启系统

[root@xuegod163 ~]#mkfs.ext4  /dev/sda4                              #格式化分区

[root@xuegod163 ~]# mkdir/sda4                                             #创建挂载点

[root@xuegod163 ~]# mount/dev/sda4 /sda4/                         #挂载分区

[root@xuegod163 ~]# 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

 

准备测试文件

[root@xuegod163 ~]# cp/etc/passwd  /sda4/

[root@xuegod163 ~]# cp/etc/hosts   /sda4/

[root@xuegod163 ~]# mkdir -p/sda4/a/b/c

[root@xuegod163 ~]# cp/etc/passwd  /sda4/a/

[root@xuegod163 ~]# touch/sda4/a/b/kong.txt

 

删除文件

[root@xuegod163 ~]# cd  /sda4/

[root@xuegod163 sda4]# ls

a  hostslost+foundpasswd

[root@xuegod163 sda4]# rm -rfa hosts  passwd

 

卸载要恢复的分区或者以只读的方式进行挂载

[root@xuegod163 ~]# umount/dev/sda4

 

恢复文件

查看要恢复分区的文件删除状态信息

[root@xuegod163 ~]#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进行恢复

[root@xuegod163 test]#extundelete /dev/sda4  --restore-inode 12

[root@xuegod163 test]# lsRECOVERED_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

 

(6)通过extundelete命令不能恢复空文件和空目录

THE END