1. 程式人生 > >centos7.5-Vim編輯器和回復ext4下誤刪除文件-Xmanager工具

centos7.5-Vim編輯器和回復ext4下誤刪除文件-Xmanager工具

centos6 信息 覆蓋 oct 命令模式 -- edit 字符操作 當前

<font color=#000000 size=5 face="微軟雅黑">本節所講內容:</font>

  • 5.1 vim的使用
  • 5.2 實戰:恢復ext4文件系統下誤刪除的文件
  • 5.3 實戰:使用xmanager等遠程連接工具管理Linux

<font color=#000000 size=5 face="微軟雅黑">5.1 vim主要模式介紹,vim命令模式。</font>

<font color=#000000 size=4 face="微軟雅黑">5.1.1 vim編輯器模式</font>

  • 確保系統已經安裝了VIM工具

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

擴展: 問:vi和vim是同一個軟件包安裝的嗎?
答:NO,vim是vi的增加版,最明顯的區別就是vim可以語法加亮,它完全兼容vi
技術分享圖片

  • 首次進入文件 ---- 命令模式
  • 出現 “Insert” ---- 編輯模式
  • 輸入: ---- 命令行模式

  • A:從編輯模式到命令行模式怎樣切換?
    編輯模式->esc->命令模式->: ->命令行模式
  • B:字符操作(怎樣進入編輯模式?)
    進入編輯模式 a i o A I O

<font color=#000000 size=4 face="微軟雅黑">說明:</font>

  • <font color=red size=4 face="微軟雅黑">i 當前字符之前插入 (光標前)</font>
  • I 行首插入 (行首)
  • <font color=red size=4 face="微軟雅黑">a 當前字符之後插入 (光標後)</font>
  • A 行尾插入(行尾)
  • <font color=red size=4 face="微軟雅黑">o下一行插入 (另起一行)</font>
  • O上一行插入(上一行插入)
  • x <font color=red size=4 face="微軟雅黑">向後刪除一個字符 等同於delete</font>

  • X 向前刪除一個字符
  • u 撤銷一步 每按一次就撤銷一次
  • <font color=red size=4 face="微軟雅黑">r 替換</font>

<font color=#000000 size=4 face="微軟雅黑">5.1.2 在命令模式下做的操作:</font>

  • 光標定位
  • 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可以進行補全操作,所需要的內容必須是在當前打開的文件內存在的,它只針對當前文件

<font color=#000000 size=4 face="微軟雅黑">5.1.3 V模式(列)</font>

  • 進入v模式 移動光標選擇區域、
  • 編程的時候需要進行多行註釋:
  • 1)、ctrl+v 進入列編輯模式
  • 2)、向下或向上移動光標,把需要註釋、編輯的行的開頭選中起來
  • 3)、然後按大寫的I
  • 4)、再插入註釋符或者你需要插入的符號,比如"#"
  • 5)、再按Esc,就會全部註釋或添加了

刪除:再按ctrl+v 進入列編輯模式;向下或向上移動光標 ;選中註釋部分,然後按d, 就會刪除註釋符號。

<font color=#000000 size=4 face="微軟雅黑">5.1.4 命令行模式操作</font>

: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
    <font color=#000000 size=4 face="微軟雅黑">5.1.5 自定義vim使用環境</font>

  • 臨時設置

  • :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

<font color=#000000 size=4 face="微軟雅黑">5.1.6 其它編輯器</font>

  • nano編輯器

  • emacs編輯器

  • GHOME編輯器gedit
  • 例:
    [root@xuegod63 ~]# gedit /etc/passwd

    <font color=#000000 size=4 face="微軟雅黑">5.1.7 實戰1:在windows中編輯好的漢字文本文檔,上傳到Linux下打開亂碼。</font>

  • 實驗環境: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 列舉所有已知的字符集

    <font color=#000000 size=4 face="微軟雅黑">5.1.8 實戰2:解決將公司Linux服務器上腳本導到windows上打開串行的問題</font>
    <font color=red size=4 face="微軟雅黑">原因:因為windows和linux處理回車方法不同。</font>

    上傳” 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類型。
    聯系方式:
    學神IT教育官方網站: http://xuegod.ke.qq.com
    學神IT教育-Linux技術交流QQ群: 722287089
    咨詢MK老師 QQ: 2659153446

<font color=#000000 size=5 face="微軟雅黑">5.2 實戰:在Centos6/RHEL6上恢復ext4文件系統下誤刪除的文件</font>
技術分享圖片

[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也由這三部分組成。
<font color=red size=4 face="微軟雅黑">a.txt -->inode --> block</font><font color=red size=4 face="微軟雅黑">
文件名 存放文件元數據信息 真正存放數據
</font>
查看文件文件名:

[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塊:真正存儲數據的地方
<font color=red size=4 face="微軟雅黑">邏輯刪除:
為什麽刪除比復制快?
</font>
技術分享圖片
技術分享圖片
誤刪除文件後,第一件事要做什麽??? 你不心刪除把存了幾十年的大片刪除了。怎麽辦?

  • 避免誤刪除的文件內容被覆蓋。 如何避免?
  • 卸載需要恢復文件的分區或以只讀的方式掛載

<font color=#000000 size=4 face="微軟雅黑">5.2.2 實戰:在ext4文件系統上恢復被誤刪除的文件</font>
下載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/   #掛載

<font color=#000000 size=4 face="微軟雅黑">5.2.3 復制一些測試文件,然後把這些文件再刪除,然後演示恢復:</font>

[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

<font color=#000000 size=4 face="微軟雅黑">5.2.4 安裝extundelet </font>
上傳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/

<font color=#000000 size=4 face="微軟雅黑">5.2.5 開始恢復:</font>

  • 方法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在恢復文件的時候能不能自動創建空文件和目錄?
答:不能。

聯系方式:

  • 學神IT教育官方網站: http://xuegod.ke.qq.com
  • 學神IT教育-Linux技術交流QQ群: 722287089
  • 咨詢MK老師 QQ: 2659153446

<font color=#000000 size=5 face="微軟雅黑">5.3 實戰:使用xmanager等遠程連接工具管理Linux</font>

<font color=#000000 size=4 face="微軟雅黑">5.3.1 Linux下常用遠程連接工具介紹</font>
技術分享圖片
<font color=#000000 size=4 face="微軟雅黑">5.3.2 xmanager 使用方法</font>
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調用桌面
    技術分享圖片
    聯系方式:
  • 學神IT教育官方網站: http://xuegod.ke.qq.com
  • 學神IT教育-Linux技術交流QQ群: 722287089
  • 咨詢MK老師 QQ: 2659153446

微信公眾號:
技術分享圖片
申老師微信賬號
技術分享圖片
總結:

  • 5.1 vim的使用
  • 5.2 實戰:恢復ext4文件系統下誤刪除的文件
  • 5.3 實戰:使用xmanager等遠程連接工具管理Linux
  • 註:更多學習資源,可以加MK講師QQ: 3175492114
  • MK在最後,祝你:早日成為Linux牛人!

centos7.5-Vim編輯器和回復ext4下誤刪除文件-Xmanager工具