Centos7.5 -Vim编辑器和恢复ext4下误删除的文件-Xmanager工具

本节所讲内容:

  • 5.1 vim的使用
  • 5.2 实战:恢复ext4文件系统下误删除的文件
  • 5.3 实战:使用xmanager等远程连接工具管理Linux

5.1 vim主要模式介绍,vim命令模式。

5.1.1 vim编辑器模式

  • 确保系统已经安装了VIM工具

    [root@panda ~]# rpm -qf which vim
    [root@panda ~]# rpm -qf which vi

扩展: 问:vi和vim是同一个软件包安装的吗?
答:NO,vim是vi的增加版,最明显的区别就是vim可以语法加亮,它完全兼容vi
VIM编辑器模式

  • 首次进入文件 ---- 命令模式

  • 出现 “Insert” ---- 编辑模式

  • 输入: ---- 命令行模式

  • A:从编辑模式到命令行模式怎样切换?
    编辑模式->esc->命令模式->: ->命令行模式

  • B:字符操作(怎样进入编辑模式?)
    进入编辑模式 a i o A I O

说明:

  • i 当前字符之前插入 (光标前)

  • I 行首插入 (行首)

  • a 当前字符之后插入 (光标后)

  • A 行尾插入(行尾)

  • o下一行插入 (另起一行)

  • O上一行插入(上一行插入)

  • x 向后删除一个字符 等同于delete

  • X 向前删除一个字符

  • u 撤销一步 每按一次就撤销一次

  • r 替换

5.1.2 在命令模式下做的操作:

  • 光标定位
  • hjkl 左下上右
  • 0 和 home键表示切换到行首, $和end键表示切换到行尾
  • gg 快速定位到文档的首行 , G定位到未行
  • 3gg 或者 3G 快速定位到第3行
  • /string(字符串) -----找到或定位你要找的单词或内容,如果相符内容比较多,我们可以通过N、n来进行向上向下查找,并且vi会对查找到的内容进行高亮显示,取消用 :noh
  • /^d ----^意思表示以什么开头 ,,查找以字母d开头的内容
  • /t$ -----$意思表示以什么结尾,,查找以字母t结尾的内容
  • vim + a.txt 打开文件后,光标会自动位于文件的最后一行

如何对文本进行编辑:

	1.删除、复制、粘贴、撤销
	2.y 复制(以字符为单位) :表示对单个字符进行复制,如果要复制整行,用yy(以行为单位)   
	3.复制N行: Nyy  ,比如: 2yy ,表示复制2行
	4.dd(删除,以行为单位,删除当前光标所在行)
	5.删除N行: Ndd  ,比如: 2dd ,表示删除2行
	6.p : P粘贴
	7.剪切: dd
	8.x 删除光标所在位置的字符
	9.D 从光标处删除到行尾
	10.u  撤销操作 
	11.ctrl+r  还原撤销过的操作,将做过的撤销操作再还原回去,也就是说撤销前是什么样,再还原成什么样
	12.r 替换,或者说用来修改一个字符

总结:vim如何进入其它模式

  • a A o O i I 都是可以进行插入,编辑模式
  • : 进入命令行模式
  • v 进入可视模式
  • ctrl+v 进入可视块模式
  • V 进入可视行模式
  • R 擦除、改写,进入替换模式
  • 你进入以上模式后,想要退出 ,按esc

扩展:插入模式中的操作
ctrl+p可以进行补全操作,所需要的内容必须是在当前打开的文件内存在的,它只针对当前文件

5.1.3 V模式(列)

  • 进入v模式 移动光标选择区域、
  • 编程的时候需要进行多行注释:
  • 1)、ctrl+v 进入列编辑模式
  • 2)、向下或向上移动光标,把需要注释、编辑的行的开头选中起来
  • 3)、然后按大写的I
  • 4)、再插入注释符或者你需要插入的符号,比如"#"
  • 5)、再按Esc,就会全部注释或添加了

删除:再按ctrl+v 进入列编辑模式;向下或向上移动光标 ;选中注释部分,然后按d, 就会删除注释符号。

5.1.4 命令行模式操作

:w 保存 save
:w! 强制保存
:q 没有进行任何修改,退出 quit
:q! 修改了,不保存,强制退出
:wq 保存并退出 
:wq! 强制保存并退出
:x 保存退出
例: wq! 强制保存并退出
[root@xuegod63 ~]# ll /etc/shadow
----------. 1 root root 1179 9月  19 12:57 /etc/shadow
[root@xuegod63 ~]# vim /etc/shadow

调用外部文件或命令

假设:我想要写入我的网卡MAC地址,我要查看一下,当前在vim编辑文档,照着写。这样好麻烦。解决办法呢?

  • 在命令行模式下操作:
  • :!ifconfig 调用系统命令
  • !+命令
  • 读取其他文件。(把其他文件中的内容追加到当前文档中)
  • :r /etc/hosts

文本替换

格式 : 范围(其中%所有内容)   s分隔符 旧的内容 分隔符 新的内容  (分隔符可以自定义)
默认是每一行的第一个符合要求的词   (/g全部)
:1,3 s/bin/xuegod    替换第1到3行中出现的第一个bin进行替换为xuegod
:1,3 s/bin/xuegod/g  替换第1到3行中查找到所有的bin进行替换为xuegod
:3 s/xue/aaaaa     #只把第3行中内容替换了
:% s/do/xuegod/g  	将文本中所有的do替换成xuegod
:% s/do/xuegod/gi	将文本中所有的do替换成xuegod, 并且忽略do的大小写
:% s@a@b@g	   将文本中所有的a替换成b

5.1.5 自定义vim使用环境

  • 临时设置

  • :set nu 设置行号

  • :set nonu 取消设置行号

  • :noh 取消高亮显示

  • 永久设置环境

  • vim /etc/vimrc 设置后会影响到系统所有的用户

  • ~/.vimrc #在用户的家目录下,创建一个.vimrc。这样只影响到某一个用户,没有自己建一个

    例:
    [root@xuegod63 ~]# cat /root/.vimrc
    set nu
    [root@xuegod63 ~]# vim /root/.vimrc
    在这里插入图片描述

  • vim打开多个文件

  • 方法1:以上下形势,打开两个文档

  • [root@xuegod63 ~]# vim -o /etc/passwd /etc/hosts
    在这里插入图片描述
    方法2:以左右方式打开两个文档
    [root@xuegod63 ~]# vim -O /etc/passwd /etc/hosts
    注:ctrl+ww 在两文档之间进行切换编辑。大写O左右分屏,小写的o上下分屏

    比较两个文件内容
    [root@xuegod63 ~]# cp /etc/passwd mima.txt
    [root@xuegod63 ~]# echo aaa >> mima.txt
    [root@xuegod63 ~]# diff /etc/passwd mima.txt
    40a41

    aaa
    [root@xuegod63 ~]# vimdiff /etc/passwd mima.txt

5.1.6 其它编辑器

  • nano编辑器

  • emacs编辑器

  • GHOME编辑器gedit

  • 例:
    [root@xuegod63 ~]# gedit /etc/passwd

5.1.7 实战1:在windows中编辑好的汉字文本文档,上传到Linux下打开乱码。

  • 实验环境:centos7.4 现在系统默认使用的语言是汉语。(系统中必须安装好中文包)。

  • 将同目录下“a此文件在windows下打开正常-到linux下vim打开是乱码.txt”上传到Linux服务器上。使用ssh远程连接到Linux上,使用vim打开显示乱码。

  • 原因:编码的问题

  • 通过iconv命令转码 没有使用过:1
    参数:

  • -f, --from-code=名称 原始文本编码

  • -t, --to-code=输出编码

  • -o, --output=FILE 输出文件名

  • [root@xuegod63 ~]# mkdir test #创建一个测试目录

  • [root@xuegod63 ~]# cd test/

  • 将测试的文件上传到Linux服务器上:
    在这里插入图片描述
    [root@xuegod63 ~]# iconv -f gb2312 -t utf8 a此文件在windows下打开正常-到linux下vim打开是乱码.txt -o aa.txt
    [root@xuegod63 ~]# cat aa.txt
    #!/bin/bash
    echo “学神IT”
    信息:
    -l, --list 列举所有已知的字符集

5.1.8 实战2:解决将公司Linux服务器上脚本导到windows上打开串行的问题
原因:因为windows和linux处理回车方法不同。

上传” b在Linux编辑的文档到windows下没有换行.sh” 到Linux上,打开后正常显示
[root@localhost test]# sz b在Linux编辑的文档到windows下没有换行.sh   #发送到本地
在window 上打开显示:

在这里插入图片描述
解决方法:
[root@xuegod63 ~]# rpm -ivh /mnt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
注: 在centos7上,unix2dos这个命令已经被集成到dos2unix-6.0.3-7.el7.x86_64.rpm包中。在centos6下需要安装unix2dos.xxx.rpm。
[root@localhost test]# unix2dos b在Linux编辑的文档到windows下没有换行.sh
[root@localhost test]# sz b在Linux编辑的文档到windows下没有换行.sh #发送到windows本地 显示正常。
在这里插入图片描述
注:dos2unix 这个命令是把windows下的回车转成linux类型。
Linux架构师高薪入口:

1.学神IT教育官方网站:http://xuegod.ke.qq.com

2.10年行业资深老鸟MK:QQ2659153446

3.加入Linux技术交流QQ群:722287089,即可获得以下福利:

①定期分享免费学习资料与视频(工具+笔记+拓展实战)
②10年行业资深老鸟在线答疑:技能+实战+项目分享+高薪就业
③有机会免费领取Linux云计算集群架构师4册书籍

5.2 实战:在Centos6/RHEL6上恢复ext4文件系统下误删除的文件
在这里插入图片描述

[root@xuegod63 ~]# rm -Rf /    #执行不成功的,
rm: 在"/" 进行递归操作十分危险
rm: 使用 --no-preserve-root 选项跳过安全模式
[root@xuegod63 ~]# rm -rf /*    #这个可以执行成功。 呵呵。。。

ext4文件系统上删除文件,可以恢复: extundelete ,ext3恢复使用:ext3grep
windows恢复误删除的文件:  final data v2.0 汉化版  和  easyrecovery  

扩展:
Linux文件系统由三部分组成:文件名,inode,block
windows也由这三部分组成。
a.txt -->inode --> block
文件名 存放文件元数据信息 真正存放数据

查看文件文件名:

[root@xuegod63 ~]# cp /etc/passwd a.txt 
[root@xuegod63 ~]# ls a.txt 
a.txt

查看inode号:

常识: 每个文件,有一个inode号。
[root@xuegod63 ~]# ls -i a.txt
440266 a.txt

查看inode中的文件属性; 通过stat命令查看inode中包含的内容

[root@xuegod63 ~]# stat a.txt   #查看inode信息:
[root@xuegod63 ~]# ls -l a.txt 
-rw-r--r-- 1 root root 1720 Oct 25 10:21 a.txt

block块:真正存储数据的地方
逻辑删除:
为什么删除比复制快?

在这里插入图片描述
在这里插入图片描述
误删除文件后,第一件事要做什么??? 你不心删除把存了几十年的大片删除了。怎么办?

  • 避免误删除的文件内容被覆盖。 如何避免?
  • 卸载需要恢复文件的分区或以只读的方式挂载

5.2.2 实战:在ext4文件系统上恢复被误删除的文件
下载extundelete
http://sourceforge.net/ 开源软件发布中心
准备测试分区:

[root@xuegod63 /]# fdisk /dev/sda  #创建一个sda4分区
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): 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: 0x000b8b35

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

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): 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.
[root@xuegod63 ~]#reboot
[root@xuegod63 ~]# partx -a /dev/sda #获得新分区表

扩展:

  • 如果在根下删除文件了,想恢复,怎么办?
    方法1: 立即断电,然后把磁盘以只读方式,挂载到另一个电脑中进行恢复
    方法2:把extundelete在虚拟机上(虚拟机系统要和服务器版本一样),提前安装好后再复制到U盘中,把U盘插入服务器,恢复时,恢复的文件要保存到U盘中,(不要让恢复的数据写到/下,那样会覆盖之前删除的文件)

使用新的分区表:

[root@xuegod63 /]# mkdir /tmp/sda4     #创建挂载点
[root@xuegod63 ~]# mkfs.ext4 /dev/sda4    #格式化
[root@xuegod63 ~]# mount /dev/sda4 /tmp/sda4/   #挂载

5.2.3 复制一些测试文件,然后把这些文件再删除,然后演示恢复:

[root@xuegod63 ~]# cp /etc/passwd /tmp/sda4/
[root@xuegod63 ~]# cp /etc/hosts /tmp/sda4/
[root@xuegod63 ~]# echo aaa > a.txt
[root@xuegod63 ~]# mkdir -p /tmp/sda4/a/b/c
[root@xuegod63 ~]# cp a.txt /tmp/sda4/a/
[root@xuegod63 ~]# cp a.txt /tmp/sda4/a/b/
[root@xuegod63 ~]# touch /tmp/sda4/a/b/kong.txt
安装tree命令:
[root@xuegod63 ~]# rpm -ivh /mnt/Packages/tree-1.5.3-2.el6.x86_64.rpm
[root@xuegod63 ~]# tree /tmp/sda4/
/tmp/sda4/
├── a
│   ├── a.txt
│   └── b
│       ├── a.txt
│       ├── c  #空目录
│       └── kong.txt  #空文件
├── hosts
├── lost+found
└── passwd

删除文件:

[root@xuegod63 ~]# cd /tmp/sda4/
[root@xuegod63 sda4]# ls
a  hosts  lost+found  passwd
[root@xuegod63 sda4]# rm -rf a hosts passwd 

误删除文件后,第一件事要做什么???
如何避免误删除的文件内容被覆盖???
卸载需要恢复文件的分区:或以只读的方式挂载

[root@localhost ~]#cd /root
[root@localhost ~]# umount /tmp/sda4

5.2.4 安装extundelet
上传extundelete到linux中:

  • 从windows上传extundelete文件到linux,安装xmanager v5 或者CRT

    [root@xuegod63 ~]# rpm -ivh /mnt/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm

安装后,就有了rz命令和sz命令

  • rz : 上传windows中的文件到linux
  • sz :下载,将linux中的文件传到windows

解压并安装extundelet

[root@xuegod63 extundelete-0.2.4]# tar jxvf extundelete-0.2.4.tar.bz2 
[root@xuegod63 ~]# cd extundelete-0.2.4
[root@xuegod63]# yum install e2fsprogs-devel
[root@xuegod63 extundelete-0.2.4]# ./configure   #检查系统安装环境
[root@xuegod63 extundelete-0.2.4]# make  -j 4  #编译,把源代码编译成可执行的二进制文件。 

-j 4 使用4进程同时编译,提升编译速度 或 使用4核CPU同时编译。

[root@xuegod63 extundelete-0.2.4]# make install  #安装

install 和cp 有什么区别?
install 复制时可以指定权限 cp不可以
例:

[root@xuegod63 ~]# install -m 777 /bin/find /opt/a.sh
[root@xuegod63 ~]# ll /opt/

5.2.5 开始恢复:

  • 方法1:通过inode结点恢复

  • 方法二:通过文件名恢复

  • 方法三:恢复某个目录,如目录a下的所有文件

  • 方法四:恢复所有的文件

    [root@xuegod63 ~]# umount /tmp/sda4/
    [root@xuegod63 ~]# mkdir test #创建一个目录使用于存放恢复的数据
    [root@xuegod63 ~]# cd test/

方法1:

  • 通过inode结点查看被删除的文件名字:

    [root@xuegod63 test]# extundelete /dev/sda4 --inode 2
    lost+found 11
    passwd 12 Deleted
    hosts 13 Deleted
    a 7313 Deleted

扩展:ext4文件系统的分区根目录的inode值为2,xfs分区根目录的inode值为64

[root@xuegod63 test]# ls -id /boot/   #xfs文件系统
64 /boot/
[root@xuegod63 test]# mount /dev/sda4 /tmp/sda4/
[root@xuegod63 test]# ls -id /tmp/sda4/
2 /tmp/sda4/
[root@xuegod63 test]# umount /tmp/sda4/

方法1:通过inode结点恢复

[root@xuegod63 test]# extundelete /dev/sda4 --restore-inode 12
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 9 groups loaded.
Loading journal descriptors ... 63 descriptors loaded.
[root@xuegod63 test]# ls 
RECOVERED_FILES
[root@xuegod63 test]# diff /etc/passwd RECOVERED_FILES/file.12# 没有任何输出,说明一样

方法二,通过文件名恢复

[root@xuegod63 test]# extundelete /dev/sda4 --restore-file passwd
[root@xuegod63 test]# diff /etc/passwd RECOVERED_FILES/passwd  # 没有任何输出,说明一样

方法三:恢复某个目录,如目录a下的所有文件:

[root@xuegod63 test]# extundelete /dev/sda4 --restore-directory a
[root@xuegod63 test]# tree RECOVERED_FILES/a/
RECOVERED_FILES/a/
├── a.txt
└── b
└── a.txt
下面是原来的目录结构:
[root@xuegod63 ~]# tree /root/sda4-back/a/
/root/sda4-back/a/
├── a.txt
└── b
    ├── a.txt
    ├── c
└── kong.txt

方法四:恢复所有的文件

[root@xuegod63 test]# extundelete /dev/sda4 --restore-all

删除前后的数据:
在这里插入图片描述
extundelete在恢复文件的时候能不能自动创建空文件和目录?
答:不能。

联系方式:

Linux架构师高薪入口:

1.学神IT教育官方网站:http://xuegod.ke.qq.com

2.10年行业资深老鸟MK:QQ2659153446

3.加入Linux技术交流QQ群:722287089,即可获得以下福利:

①定期分享免费学习资料与视频(工具+笔记+拓展实战)
②10年行业资深老鸟在线答疑:技能+实战+项目分享+高薪就业
③有机会免费领取Linux云计算集群架构师4册书籍

5.3 实战:使用xmanager等远程连接工具管理Linux

5.3.1 Linux下常用远程连接工具介绍
在这里插入图片描述
5.3.2 xmanager 使用方法
1、xshell使用方法

  • 例1:连接一台新的服务器
    在这里插入图片描述
  • 例2:调整xshell字体大小
    在这里插入图片描述
  • 例3:调整rz和sz命令的默认路径
    在这里插入图片描述
    2、xftp使用方法
  • 例1:上传一个文件夹到Linux服务器上
    在这里插入图片描述
    3、xstart使用方法
  • 方法1:使用xshell直接运行图形界面的程序
  • 例1:[root@xuegod63 ~]# gnome-terminal
  • 例2:[root@xuegod63 ~]# firefox &
  • 方法2:使用xstart调用桌面
    在这里插入图片描述
    Linux架构师高薪入口:

1.学神IT教育官方网站:http://xuegod.ke.qq.com

2.10年行业资深老鸟MK:QQ2659153446

3.加入Linux技术交流QQ群:722287089,即可获得以下福利:

①定期分享免费学习资料与视频(工具+笔记+拓展实战)
②10年行业资深老鸟在线答疑:技能+实战+项目分享+高薪就业
③有机会免费领取Linux云计算集群架构师4册书籍

微信公众号:
在这里插入图片描述
MK老师微信号
在这里插入图片描述
总结:

  • 5.1 vim的使用
  • 5.2 实战:恢复ext4文件系统下误删除的文件
  • 5.3 实战:使用xmanager等远程连接工具管理Linux
  • 注:更多学习资源,可以加MK讲师QQ: 3175492114
  • MK在最后,祝你:早日成为Linux牛人!
可以读写Ext2,以Ext2方式挂载Ext3文件系统(不支持Ext3日志),不支持中文! It provides Windows NT4.0/2000/XP/2003/Vista/2008 with full access to Linux Ext2 volumes (read access andwrite access). This may be useful if you have installed both Windows and Linux as a dual boot environment on your computer. What features are supported? Complete reading and writing access to files and directories of volumes with theExt2 orExt3 file system. Supports features which are specific to the I/O-system of Windows: Byte Range Locks, Directory Notfication (so the Explorer updates the view of a directory on changes within that directory), Oplocks (so SMB clients are able to cache the content of files). Allows Windows to run with paging files on Ext2 volumes. UTF-8 encoded file names are supported. The driver treats files with file names that start with a dot "." character ashidden. Supports GPT disks if the Windows version used also does. Supports use of the Windows mountvol utility to create or delete drive letters for Ext2 volumes (except on Windows NT 4.0). See also section"Can drive letters also be configured from scripts?". What features are *not* supported? Inodes that are larger than 128 bytes are not supported. Access rights are not maintained. All users can access all the directories and files of an Ext2 volume. If a new file or directory is created, it inherits all the permissions, the GID and the UID from the directory where it has been created. There is one exception to this rule: a file (but not a directory) the driver has created always has cleared "x" permissions, it inherits the "r" and the "w" permissions only. See also section"What limitations arise from not maintaining access rights?". The driver does not allow accessing special files at Ext2 volumes, the access will be always denied. (Special files are sockets, soft links, block devices, character devices and pipes.) Alternate 8.3-DOS names are not supported (just because there is no place to store them in an Ext2 file system). This can prevent legacy DOS applications, executed by the NTVDM of Windows, from accessing some files or directories. Currently the driver does not implement defragging support. So defragmentation applications will neither show fragmentation information nor defragment any Ext2 volume. This software does not achieve booting a Windows operating system from an Ext2 volume. LVM volumes are not supported, so it is not possible to access them.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值