centos7.5-Vim編輯器和回復ext4下誤刪除文件-Xmanager工具
- 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 -qfwhich vi
擴展: 問:vi和vim是同一個軟件包安裝的嗎?
答:NO,vim是vi的增加版,最明顯的區別就是vim可以語法加亮,它完全兼容vi
- 首次進入文件 ---- 命令模式
- 出現 “Insert” ---- 編輯模式
-
輸入: ---- 命令行模式
- A:從編輯模式到命令行模式怎樣切換?
編輯模式->esc->命令模式->: ->命令行模式 - B:字符操作(怎樣進入編輯模式?)
<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
40a41aaa
[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工具