本人从事IT行业已有十多年,有着丰富的实战经验,总结了大量的学习方法,更是积累了很多的学习资料,很高兴能在这里跟大家交流学习,希望能在这里跟大家共同进步和成长!
全套视频学习资料链接:
https://www.bilibili.com/video/BV1G3411B75B?share_source=copy_web
https://www.bilibili.com/video/BV1Y3411x7X4?share_source=copy_web
本节所讲内容:
4.1 vim的使用
4.2 实战:恢复ext4文件系统下误删除的文件
4.3 实战:使用xfs_undelete恢复误删除文件
4.4 实战:使用xmanager等远程连接工具管理Linux
4.1 vim主要模式介绍
vim命令模式
问:vi和vim是同一个软件包安装的吗?
答:NO,vim是vi的增加版,最明显的区别就是vim可以语法加亮,它完全兼容vi
查看一个命令,是哪个软件包,安装的:
[root@xuegod63 ~]# rpm -qf /usr/bin/vim
[root@xuegod63 ]# which vim
[root@xuegod63 ]# rpm -qf which vim #</strong><strong style="font-size:17px;" data-v-2505e99a>反引号,esc按键下的键,反引号中可执行命令</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@</strong><strong style="font-size:17px;" data-v-2505e99a>xuegod63</strong><strong style="font-size:17px;" data-v-2505e99a> ~]# rpm -qf </strong><strong style="font-size:17px;" data-v-2505e99a>$</strong><strong style="font-size:17px;" data-v-2505e99a>(which vi) #</strong><strong style="font-size:17px;" data-v-2505e99a>$</strong><strong style="font-size:17px;" data-v-2505e99a>(</strong><strong style="font-size:17px;" data-v-2505e99a>可执行命令</strong><strong style="font-size:17px;" data-v-2505e99a>)</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>$</strong><strong style="font-size:17px;" data-v-2505e99a>() </strong><strong style="font-size:17px;" data-v-2505e99a>与` 都可以进行命令替换,命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行
4.1.1 vim编辑器的四种操作模式
1.Vim常用4种模式.
正常模式(Normal mode,俗称命令模式) ,命令行模式(Command-line mode)
插入模式(Insert mode ,俗称编辑模式), 可视模式(Visual mode,俗称可视块模式)
[root@xuegod63 ~]# cp /etc/passwd a.txt
[root@xuegod63 ~]# vim a.txt
首次进入文件 —-正常模式(Normal mode,俗称命令模式)
按下I键,出现 “Insert” —-插入模式(Insert mode ,俗称编辑模式)
按Esc键,再输入冒号: —-命令行模式(Command-line mode)
例1从编辑模式到命令行模式怎样切换?
编辑模式->esc->命令模式->: ->命令行模式
注意在命令模式下,输入命令无效时,检查下输入法是不是中文输入法,切换为英文输入法
例2字符操作(怎样进入编辑模式?)
进入编辑模式 a i o A I O
说明:
i 当前字符之前插入 (光标前)
I 行首插入 (行首)
a 当前字符之后插入 (光标后)
A 行尾插入(行尾)
o下一行插入 (另起一行)
O上一行插入(上一行插入)
x 向后删除一个字符 等同于delete
X 向前删除一个字符
u 撤销一步 每按一次就撤销一次
ctrl+r 恢复,每按一次就恢复一次
r 替换
4.1.2 在正常模式下做的操作:
1、光标定位
hjkl 左下上右
0 和 home键表示切换到行首, \(和end键表示切换到行尾</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>gg 快速定位到文档的首行 , G定位到未行</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>3gg 或者 3G 快速定位到第3行</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>/string(字符串) -----找到或定位你要找的单词或内容然后敲回车,如果相符内容比较多,我们可以通过N、n来进行向上向下查找,并且vim会对查找到的内容进行高亮显示,取消高亮用 :noh </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>/^d ----尖括号^意思表示以什么开头 ,查找以字母d开头的内容</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>/bash\) —–\(意思表示以什么结尾,查找以字母bash结尾的内容</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>vim + /etc/passwd</strong><strong style="font-size:17px;" data-v-2505e99a> 打开文件后,光标会自动位于文件的最后一行。 了解一下这个技巧。</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>vim +23 /etc/passwd</strong><strong style="font-size:17px;" data-v-2505e99a> 打开文件后,光标会自动位于文件的第23行,方便后期排错。</strong><strong style="font-size:17px;" data-v-2505e99a>如:服务器启动报错,第23,有语法错误。使用vim +23 </strong><strong style="font-size:17px;" data-v-2505e99a>/etc/passwd</strong><strong style="font-size:17px;" data-v-2505e99a>可以快速定位到23行。</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>分享心得:我更喜欢vim打开文件,然后按G,跳到最后。 因这个vim + a.txt 技巧不常用,过一段时间肯定会忘。Linux中有太多的小技巧,大家应该记那些常用的。</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>2、在正常模式对文本进行编辑</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>删除、复制、粘贴、撤销</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>yy复制整行 </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>复制N行: Nyy ,比如: 2yy ,表示复制2行</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>dd(删除,以行为单位,删除当前光标所在行)</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>删除N行: Ndd ,比如: 2dd ,表示删除2行</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>p : P粘贴</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>剪切: dd</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>x 删除光标所在位置的字符</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>D 从光标处删除到行尾</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>u 撤销操作 </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>ctrl+r 还原撤销过的操作,将做过的撤销操作再还原回去,也就是说撤销前是什么样,再还原成什么样</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>r 替换,或者说用来修改一个字符</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>总结:vim如何进入其它模式</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>a A o O i I 都是可以进行插入,编辑模式</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>: 进入命令行模式</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>ctrl+v 进入可视块模式</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>R 擦除、改写,进入替换模式</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>你进入以上模式后,想要退出 ,按esc</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:24px;" data-v-2505e99a>4.1.3 </strong><strong style="font-size:24px;" data-v-2505e99a>Visual mode</strong><strong style="font-size:24px;" data-v-2505e99a>可视</strong><strong style="font-size:24px;" data-v-2505e99a>块</strong><strong style="font-size:24px;" data-v-2505e99a>模式</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>编程</strong><strong style="font-size:17px;" data-v-2505e99a>或修改服务器配置文件</strong><strong style="font-size:17px;" data-v-2505e99a>的时候</strong><strong style="font-size:17px;" data-v-2505e99a>,</strong><strong style="font-size:17px;" data-v-2505e99a>需要进行</strong><strong style="font-size:17px;" data-v-2505e99a>多行注释</strong><strong style="font-size:17px;" data-v-2505e99a>,会使用Visual模式。</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>1、进入Visual模式的批量删除,方法如下:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>删除:再按ctrl+v 进入</strong><strong style="font-size:17px;" data-v-2505e99a>可视块模</strong><strong style="font-size:17px;" data-v-2505e99a>式</strong><strong style="font-size:17px;" data-v-2505e99a>;</strong><strong style="font-size:17px;" data-v-2505e99a>向下或向上移动光标</strong><strong style="font-size:17px;" data-v-2505e99a> ;</strong><strong style="font-size:17px;" data-v-2505e99a>选中</strong><strong style="font-size:17px;" data-v-2505e99a>部分内容</strong><strong style="font-size:17px;" data-v-2505e99a>,然后按d, 就会删除注释符号。</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>例:将</strong><strong style="font-size:17px;" data-v-2505e99a>sshd_config</strong><strong style="font-size:17px;" data-v-2505e99a> 文件中17行到20行前面的#号删除</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# vim /etc/ssh/sshd_config</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>改:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a> 为:</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>2、进入Visual模式的批量修改,方法如下:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>1</strong><strong style="font-size:17px;" data-v-2505e99a>)</strong><strong style="font-size:17px;" data-v-2505e99a>、ctrl+v 进入列编辑模式</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>2)、</strong><strong style="font-size:17px;" data-v-2505e99a>向下或向上移动光标</strong><strong style="font-size:17px;" data-v-2505e99a>,</strong><strong style="font-size:17px;" data-v-2505e99a>把需要注释</strong><strong style="font-size:17px;" data-v-2505e99a>、编辑</strong><strong style="font-size:17px;" data-v-2505e99a>的行的开头</strong><strong style="font-size:17px;" data-v-2505e99a>选中</strong><strong style="font-size:17px;" data-v-2505e99a>起来</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>4)、</strong><strong style="font-size:17px;" data-v-2505e99a>然后按大写的</strong><strong style="font-size:17px;" data-v-2505e99a>I</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>5)、</strong><strong style="font-size:17px;" data-v-2505e99a>再插入注释符</strong><strong style="font-size:17px;" data-v-2505e99a>或者你需要插入的符号</strong><strong style="font-size:17px;" data-v-2505e99a>,比如&#34;</strong><strong style="font-size:17px;" data-v-2505e99a>#</strong><strong style="font-size:17px;" data-v-2505e99a>&#34;</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>6)、</strong><strong style="font-size:17px;" data-v-2505e99a>再按Esc,就会全部注释</strong><strong style="font-size:17px;" data-v-2505e99a>或添加</strong><strong style="font-size:17px;" data-v-2505e99a>了</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>例:在</strong><strong style="font-size:17px;" data-v-2505e99a>sshd_config</strong><strong style="font-size:17px;" data-v-2505e99a> 文件中17行到20行前面加一个#号</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# vim /etc/ssh/sshd_config</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>改:</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>为:</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:24px;" data-v-2505e99a>4.1.4 命令行模式</strong><strong style="font-size:24px;" data-v-2505e99a>Command-line</strong><strong style="font-size:24px;" data-v-2505e99a>操作技巧</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>1、命令行模式</strong><strong style="font-size:17px;" data-v-2505e99a>Command-line</strong><strong style="font-size:17px;" data-v-2505e99a>操作技巧</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>:</strong><strong style="font-size:17px;" data-v-2505e99a>w 保存 save</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>:</strong><strong style="font-size:17px;" data-v-2505e99a>w</strong><strong style="font-size:17px;" data-v-2505e99a>!</strong><strong style="font-size:17px;" data-v-2505e99a> </strong><strong style="font-size:17px;" data-v-2505e99a>强制</strong><strong style="font-size:17px;" data-v-2505e99a>保存</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>:q </strong><strong style="font-size:17px;" data-v-2505e99a>没有进行任何修改,</strong><strong style="font-size:17px;" data-v-2505e99a>退出 quit</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>:q! </strong><strong style="font-size:17px;" data-v-2505e99a>修改了,不保存,</strong><strong style="font-size:17px;" data-v-2505e99a>强制退出</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>:wq 保存并退出 </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>:</strong><strong style="font-size:17px;" data-v-2505e99a>wq!</strong><strong style="font-size:17px;" data-v-2505e99a> 强制保存并退出</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>:x 保存退出</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>:e! 复原,恢复到文件打开后,没有进行修改时的状态。 修改了很多,不想保存,想复原,按:e!</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>在正常模式下,按下大写的ZZ,也可以保存并退出</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>例:</strong><strong style="font-size:17px;" data-v-2505e99a> wq!</strong><strong style="font-size:17px;" data-v-2505e99a> 强制保存并退出</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# ll /etc/shadow</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>----------. 1 root root 1179 9月 19 12:57 /etc/shadow</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# vim /etc/shadow</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>例1:调用外部文件或命令</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>语法:在命令行模式下输入: !</strong><strong style="font-size:17px;" data-v-2505e99a>+</strong><strong style="font-size:17px;" data-v-2505e99a>命令</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>例:在vim编辑文档写要写入MAC地址。</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# cp /etc/passwd a.txt</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# vim a.txt</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>:!ifconfig</strong><strong style="font-size:17px;" data-v-2505e99a> </strong><strong style="font-size:17px;" data-v-2505e99a> #在vim中调用ifconfig命令</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>读取其他文件。(把其他文件中的内容追加到当前文档中)</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>:r /etc/hosts</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>2、文本替换</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>格式 :</strong><strong style="font-size:17px;" data-v-2505e99a> </strong><strong style="font-size:17px;" data-v-2505e99a>范围(其中%所有内容) s分隔符 旧的内容 分隔符 新的内容 (分隔符可以自定义)</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>默认是每一行的第一个符合要求的词 (/g全部)</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# vim a.txt</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>:1,3 s/bin/xuegod #替换第1到3行中出现的第一个bin进行替换为xuegod</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>:1,3 s/bin/xuegod/g #替换第1到3行中查找到所有的bin进行替换为xuegod</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>:3 s/xue/aaaaa</strong><strong style="font-size:17px;" data-v-2505e99a>/g #只把第3行中所有xue替换为aaaaa了</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>修改a.txt ,先在文件中随意插入几个do 和DO 字符</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>:% s/</strong><strong style="font-size:17px;" data-v-2505e99a>do</strong><strong style="font-size:17px;" data-v-2505e99a>/</strong><strong style="font-size:17px;" data-v-2505e99a>xuegod</strong><strong style="font-size:17px;" data-v-2505e99a>/g</strong><strong style="font-size:17px;" data-v-2505e99a> #</strong><strong style="font-size:17px;" data-v-2505e99a>将文本中所有的</strong><strong style="font-size:17px;" data-v-2505e99a>do</strong><strong style="font-size:17px;" data-v-2505e99a>替换成</strong><strong style="font-size:17px;" data-v-2505e99a>xuegod</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>:% s/</strong><strong style="font-size:17px;" data-v-2505e99a>do</strong><strong style="font-size:17px;" data-v-2505e99a>/</strong><strong style="font-size:17px;" data-v-2505e99a>xuegod</strong><strong style="font-size:17px;" data-v-2505e99a>/g</strong><strong style="font-size:17px;" data-v-2505e99a>i</strong><strong style="font-size:17px;" data-v-2505e99a> </strong><strong style="font-size:17px;" data-v-2505e99a> #</strong><strong style="font-size:17px;" data-v-2505e99a>将文本中所有的</strong><strong style="font-size:17px;" data-v-2505e99a>do</strong><strong style="font-size:17px;" data-v-2505e99a>替换成</strong><strong style="font-size:17px;" data-v-2505e99a>xuegod, 并且忽略do的大小写</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>:% s</strong><strong style="font-size:17px;" data-v-2505e99a>@xuegod@do@</strong><strong style="font-size:17px;" data-v-2505e99a>g</strong><strong style="font-size:17px;" data-v-2505e99a> </strong><strong style="font-size:17px;" data-v-2505e99a>#</strong><strong style="font-size:17px;" data-v-2505e99a>将文本中所有的</strong><strong style="font-size:17px;" data-v-2505e99a>xuegod</strong><strong style="font-size:17px;" data-v-2505e99a>替换成</strong><strong style="font-size:17px;" data-v-2505e99a>do,替换时,也可以使用@做分隔符</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:24px;" data-v-2505e99a>4.1.5 自定义vim使用环境</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>1、临时设置</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# vim a.txt</strong><strong style="font-size:17px;" data-v-2505e99a> </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>:set nu 设置行号</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>:set nonu 取消设置行号</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>:noh 取消高亮显示</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>2、永久设置环境</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>vim /etc/vimrc #设置后会影响到系统所有的用户</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>~/.vimrc #在用户的家目录下,创建一个.vimrc。这样只影响到某一个用户,没有自己建一个</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>例1:临时定制vim开启显示行号功能</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# </strong><strong style="font-size:17px;" data-v-2505e99a>echo &#34;</strong><strong style="font-size:17px;" data-v-2505e99a>set nu</strong><strong style="font-size:17px;" data-v-2505e99a>&#34;</strong><strong style="font-size:17px;" data-v-2505e99a> </strong><strong style="font-size:17px;" data-v-2505e99a>&gt; </strong><strong style="font-size:17px;" data-v-2505e99a> /root/</strong><strong style="font-size:17px;" data-v-2505e99a>.</strong><strong style="font-size:17px;" data-v-2505e99a>vimrc</strong><strong style="font-size:17px;" data-v-2505e99a> </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# vim /etc/passwd</strong><strong style="font-size:17px;" data-v-2505e99a> #发现默认已经有行号了</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>3、vim打开多个文件</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>方法1:以上下形势,打开两个文档</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# vim -o /etc/passwd /etc/hosts</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span><strong style="font-size:17px;" data-v-2505e99a>注:输入 :qa 一次退出所有打开的文件</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>方法2:以左右方式打开两个文档</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# vim -O /etc/passwd /etc/hosts</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>注:ctrl+ww 在两文档之间进行切换编辑。大写O左右分屏,小写的o上下分屏</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>比较两个文件内容</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# cp /etc/passwd mima.txt</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# echo aaa &gt;&gt; mima.txt </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>方法1:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# diff /etc/passwd mima.txt </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>40a41</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>&gt; aaa</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>方法2:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# vimdiff /etc/passwd mima.txt</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:24px;" data-v-2505e99a>4.1.6 其它编辑器</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>nano编辑器</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>emacs编辑器</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>GHOME编辑器gedit</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>例:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# gedit /etc/passwd</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:24px;" data-v-2505e99a> </strong><strong style="font-size:24px;" data-v-2505e99a>4.1.7 实战1:解决上传windows中文文档乱码</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>实验环境:centos8 现在系统默认使用的语言是汉语。(系统中必须安装好中文包)。</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>将同目录下“a</strong><strong style="font-size:17px;" data-v-2505e99a>aa</strong><strong style="font-size:17px;" data-v-2505e99a>此文件在windows下打开正常-到linux下vim打开是乱码.txt”上传到Linux服务器上。使用ssh远程连接到Linux上,使用vim打开显示乱码。</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>原因:编码的问题</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>通过iconv命令转码 </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>参数:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>-f, --from-code=名称 原始文本编码</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>-t, --to-code=输出编码</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>-o, --output=FILE 输出文件名</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# mkdir test</strong><strong style="font-size:17px;" data-v-2505e99a> #创建一个测试目录</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# cd test/</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>将测试的文件上传到Linux服务器上:</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# iconv -f gb2312 -t utf8 aaa此文件在windows下打开正常-到linux下vim打开是乱码.txt -o abc.txt</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# cat </strong><strong style="font-size:17px;" data-v-2505e99a>abc</strong><strong style="font-size:17px;" data-v-2505e99a>.txt </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>#!/bin/bash</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>echo &</strong>#34;学神IT&#<strong style="font-size:17px;" data-v-2505e99a>34;</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:24px;" data-v-2505e99a>4.2 实战:在Centos6/RHEL6上恢复ext4文件系统下误删除的文件</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# rm -</strong><strong style="font-size:17px;" data-v-2505e99a>r</strong><strong style="font-size:17px;" data-v-2505e99a>f /</strong><strong style="font-size:17px;" data-v-2505e99a> #这个可以执行成功吗? 执行不成功的,</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>rm: 在&</strong>#34;/&#<strong style="font-size:17px;" data-v-2505e99a>34; 进行递归操作十分危险</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>rm: 使用 --no-preserve-root 选项跳过安全模式</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# rm -rf /*</strong><strong style="font-size:17px;" data-v-2505e99a> #这个可以执行成功。</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>ext4文件系统上删除文件,可以恢复: extundelete ,ext3恢复使用:</strong><strong style="font-size:17px;" data-v-2505e99a>ext3grep</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>windows恢复误删除的文件: final data v2.0 汉化版 和 </strong><strong style="font-size:17px;" data-v-2505e99a>easyrecovery</strong><strong style="font-size:17px;" data-v-2505e99a> </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>xfs文件系统上删除文件,暂时没有太好的办法进行完全恢复,需要找专业数据恢复公司</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>扩展:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>Linux文件系统由三部分组成:文件名,inode,block</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>windows也由这三部分组成。</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>a.txt </strong><strong style="font-size:17px;" data-v-2505e99a> </strong><strong style="font-size:17px;" data-v-2505e99a>--&gt;inode </strong><strong style="font-size:17px;" data-v-2505e99a> -</strong><strong style="font-size:17px;" data-v-2505e99a>-&gt; block</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>文件名 存放文件元数据信息 真正存放数据</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>查看文件文件名:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# cp /etc/passwd a.txt </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# ls a.txt </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>a.txt</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>查看inode号:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>常识: 每个文件,有一个inode号。</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# ls -i a.txt</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a> a.txt</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>查看inode中的文件属性; 通过stat命令查看inode中包含的内容</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]</strong># stat a.txt #<strong style="font-size:17px;" data-v-2505e99a>查看inode信息:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# ls -l a.txt </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>-rw-r--r-- 1 root root 1720 Oct 25 10:21 a.txt</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>block块:真正存储数据的地方</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>逻辑删除: </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>为什么删除比复制快?</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>误删除文件后,第一件事要做什么??? 你不心删除把存了几十年的大片删除了。</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>避免误删除的文件内容被覆盖。 如何避免?</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>卸载需要恢复文件的分区</strong><strong style="font-size:17px;" data-v-2505e99a>或以只读的方式挂载</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:24px;" data-v-2505e99a>4.2.2 实战:在ext4文件系统上恢复被误删除的文件</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>下载extundelete</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>http://sourceforge.net/</strong><strong style="font-size:17px;" data-v-2505e99a> 开源软件发布中心</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>准备测试分区:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>先添加一块硬盘</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 /]# fdisk /dev/sd</strong><strong style="font-size:17px;" data-v-2505e99a>b #创建一个sdb1分区</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>WARNING: DOS-compatible mode is deprecated. It&#39;s strongly recommended to</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a> switch off the mode (command &</strong>#39;c&#<strong style="font-size:17px;" data-v-2505e99a>39;) and change display units to</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a> sectors (command &</strong>#39;u&#<strong style="font-size:17px;" data-v-2505e99a>39;).</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>Command (m for help): </strong><strong style="font-size:17px;" data-v-2505e99a>p</strong><strong style="font-size:17px;" data-v-2505e99a> #查看现有分区表</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>Disk /dev/sda: 21.5 GB, bytes</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>255 heads, 63 sectors/track, 2610 cylinders</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>Units = cylinders of 16065 * 512 = bytes</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>Sector size (logical/physical): 512 bytes / 512 bytes</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>I/O size (minimum/optimal): 512 bytes / 512 bytes</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>Disk identifier: 0x000b8b35</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a> Device Boot Start End Blocks Id System</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>/dev/sda1 * 1 26 83 Linux</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>Partition 1 does not end on cylinder boundary.</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>/dev/sda2 26 1301 83 Linux</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>/dev/sda3 1301 1428 82 Linux swap / Solaris</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>Command (m for help): </strong><strong style="font-size:17px;" data-v-2505e99a>n</strong><strong style="font-size:17px;" data-v-2505e99a> #创建一个新分区</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>Command action</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a> e extended</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a> p primary partition (1-4)</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>p</strong><strong style="font-size:17px;" data-v-2505e99a> #创建一个主分区</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>Selected partition 4</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>First cylinder (1428-2610, default 1428): </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>Using default value 1428</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>Last cylinder, +cylinders or +size{K,M,G} (1428-2610, default 2610): </strong><strong style="font-size:17px;" data-v-2505e99a>+1G </strong><strong style="font-size:17px;" data-v-2505e99a> #指定分区大小</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>Command (m for help):</strong><strong style="font-size:17px;" data-v-2505e99a> w</strong><strong style="font-size:17px;" data-v-2505e99a> #保存</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>The partition table has been altered!</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>Calling ioctl() to re-read partition table.</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>WARNING: Re-reading the partition table failed with error 16: Device or resource busy.</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>The kernel still uses the old table. The new table will be used at</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>the next reboot or after you run partprobe(8) or kpartx(8)</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>Syncing disks.</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]#reboot</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>或</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]</strong># partx -a /dev/sdb #<strong style="font-size:17px;" data-v-2505e99a>获得新分区表</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>扩展:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>如果在根下删除文件了,想恢复,怎么办? </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>方法1: 立即断电,然后把磁盘以只读方式,挂载到另一个电脑中进行恢复</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>方法2:把extundelete在虚拟机上(虚拟机系统要和服务器版本一样),提前安装好后再复制到U盘中,把U盘插入服务器,恢复时,恢复的文件要保存到U盘中,(不要让恢复的数据写到/下,那样会覆盖之前删除的文件)</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>使用新的分区表:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 /]# mkdir /tmp/sd</strong><strong style="font-size:17px;" data-v-2505e99a>b</strong><strong style="font-size:17px;" data-v-2505e99a>1</strong><strong style="font-size:17px;" data-v-2505e99a> #创建挂载点</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# mkfs</strong><strong style="font-size:17px;" data-v-2505e99a>.ext4</strong><strong style="font-size:17px;" data-v-2505e99a> /dev/sdb1</strong><strong style="font-size:17px;" data-v-2505e99a> #格式化</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# mount /dev/sdb1 /tmp/sdb1</strong><strong style="font-size:17px;" data-v-2505e99a> #挂载</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:24px;" data-v-2505e99a>4.2.3 </strong><strong style="font-size:24px;" data-v-2505e99a>准备测试环境</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>复制一些测试文件,然后把这些文件再删除,然后演示恢复:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# cp /etc/passwd /tmp/sdb1</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# cp /etc/hosts /tmp/sdb1</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# echo aaa &gt; a.txt</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# mkdir -p /tmp/sdb1/a/b/c</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# cp a.txt /tmp/sdb1/a</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# cp a.txt /tmp/sdb1/a/b</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# touch /tmp/sdb1/a/b/kong.txt</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>安装tree命令:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# rpm -ivh /mnt/Packages/tree-1.5.3-2.el6.x86_64.rpm</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# tree /tmp/sdb1</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>/tmp/sdb1/</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>├── a</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>│ ├── a.txt</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>│ └── b</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>│ ├── a.txt</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>│ ├── c #空目录</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>│ └── kong.txt #空文件</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>├── hosts</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>├── lost+found</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>└── passwd</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>lost+found</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>使用标准的ext3/ext4档案系统格式才会产生的一个目录,目的在于当档案系统发生错误时, 将一些遗失的片段放置到这个目录下。</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>可以删除 </strong><strong style="font-size:17px;" data-v-2505e99a>rm -rf lost+found</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>可以创建 mk</strong><strong style="font-size:17px;" data-v-2505e99a>lost+found</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>删除文件:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# cd /tmp/sdb1/</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 sdb1]# ls</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>a hosts lost+found passwd</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 sdb1]# rm -rf a hosts passwd </strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>误删除文件后,第一件事要做什么???</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>如何避免误删除的文件内容被覆盖???</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>卸载需要恢复文件的分区</strong><strong style="font-size:17px;" data-v-2505e99a>:或以只读的方式挂载</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@localhost ~]#</strong><strong style="font-size:17px;" data-v-2505e99a>cd /root</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@localhost ~]# umount /tmp/sdb1</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:24px;" data-v-2505e99a>4.2.4 安装</strong><strong style="font-size:24px;" data-v-2505e99a>extundelet</strong><strong style="font-size:24px;" data-v-2505e99a> </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>上传</strong><strong style="font-size:17px;" data-v-2505e99a>extundelete</strong><strong style="font-size:17px;" data-v-2505e99a>到linux中:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>从windows上传</strong><strong style="font-size:17px;" data-v-2505e99a>extundelete</strong><strong style="font-size:17px;" data-v-2505e99a>文件到linux,安装xmanager v5 或者CRT</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# rpm -ivh /mnt/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>安装后,就有了rz命令和sz命令</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>rz : 上传windows中的文件到linux</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>sz</strong><strong style="font-size:17px;" data-v-2505e99a> </strong><strong style="font-size:17px;" data-v-2505e99a>文件名 :下载,将linux中的文件传到windows</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>解压并安装</strong><strong style="font-size:17px;" data-v-2505e99a>extundelet</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@centos63~]#mount /dev/sr0 /mnt</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@centos63~]# vim /etc/yum.repos.d/Centos-6.repo</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[CentOS6]</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>name=CentOS-server</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>baseurl=file:///mnt</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>enabled=1</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>gpgcheck=0</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63]#</strong><strong style="font-size:17px;" data-v-2505e99a> yum </strong><strong style="font-size:17px;" data-v-2505e99a>-</strong><strong style="font-size:17px;" data-v-2505e99a>y</strong><strong style="font-size:17px;" data-v-2505e99a> </strong><strong style="font-size:17px;" data-v-2505e99a>install </strong><strong style="font-size:17px;" data-v-2505e99a>e2fsprogs-devel gcc gcc-c++ gcc-g77</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 extundelete-0.2.4]# tar xf extundelete-0.2.4.tar.bz2 </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# cd extundelete-0.2.4</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 extundelete-0.2.4]# https://www.bilibili.com/read/configure </strong><strong style="font-size:17px;" data-v-2505e99a> #检查系统安装环境</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 extundelete-0.2.4]# make</strong><strong style="font-size:17px;" data-v-2505e99a> -j </strong><strong style="font-size:17px;" data-v-2505e99a> </strong><strong style="font-size:17px;" data-v-2505e99a>4 #编译,把源代码编译成可执行的二进制文件。 </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>-j 4 </strong><strong style="font-size:17px;" data-v-2505e99a> 使用4进程同时编译,提升编译速度 或 使用4核CPU同时编译。</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 extundelete-0.2.4]# make install</strong><strong style="font-size:17px;" data-v-2505e99a> #安装</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>install 和cp 有什么区别? </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>install 复制时可以指定权限 cp不可以</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>例:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# install -m 777 /bin/find /opt/find</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# ll /opt/</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:24px;" data-v-2505e99a>4.2.5 恢复数据</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>方法1:通过inode结点恢复</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>方法二:通过文件名恢复</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>方法三:恢复某个目录,如目录a下的所有文件:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>方法四:恢复所有的文件</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# umount /tmp/sdb1/ </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# mkdir test</strong><strong style="font-size:17px;" data-v-2505e99a> #创建一个目录使用于存放恢复的数据</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# cd test/</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>方法1:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>通过inode结点查看被删除的文件名字:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 test]# extundelete /dev/sdb1 --inode 2</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>. 2</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>lost+found 11</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>passwd 12 Deleted</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>hosts 13 Deleted</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>a 7313 Deleted</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>扩展:ext4文件系统的分区根目录的inode值为2,xfs分区根目录的inode值为64</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 test]# ls -id /</strong><strong style="font-size:17px;" data-v-2505e99a> #xfs文件系统</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>64</strong><strong style="font-size:17px;" data-v-2505e99a> /</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 test]# mount /dev/sdb1 /tmp/sdb1/</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 test]# ls -id /tmp/sdb1/</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>2</strong><strong style="font-size:17px;" data-v-2505e99a> /tmp/sdb1/</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 test]# umount /tmp/sdb1/</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>方法1:</strong><strong style="font-size:17px;" data-v-2505e99a>通过inode结点恢复</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 test]# extundelete /dev/sdb1 --restore-</strong><strong style="font-size:17px;" data-v-2505e99a>inode</strong><strong style="font-size:17px;" data-v-2505e99a> 12</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>NOTICE: Extended attributes are not restored.</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>Loading filesystem metadata ... 9 groups loaded.</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>Loading journal descriptors ... 63 descriptors loaded.</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 test]# ls </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>RECOVERED_FILES</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 test]# diff /etc/passwd RECOVERED_FILES/file.12</strong><strong style="font-size:17px;" data-v-2505e99a> </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>#没有任何输出,说明一样</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>方法二,通过文件名恢复</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 test]# extundelete /dev/sdb1 --restore-</strong><strong style="font-size:17px;" data-v-2505e99a>file </strong><strong style="font-size:17px;" data-v-2505e99a>hosts</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 test]# diff /etc/passwd RECOVERED_FILES/hosts</strong><strong style="font-size:17px;" data-v-2505e99a> </strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>#没有任何输出,说明一样</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>方法三:</strong><strong style="font-size:17px;" data-v-2505e99a>恢复某个目录</strong><strong style="font-size:17px;" data-v-2505e99a>,如目录a下的所有文件:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 test]# extundelete /dev/sdb1 --restore-</strong><strong style="font-size:17px;" data-v-2505e99a>directory a</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 test]# tree RECOVERED_FILES/a/</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>RECOVERED_FILES/a/</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>├── a.txt</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>└── b</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>下面是原来的目录结构:</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# tree /root/sdb1-back/a/</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>/root/sdb1-back/a/</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>└── b</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a> ├── a.txt</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a> ├── </strong><strong style="font-size:17px;" data-v-2505e99a>c</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a> </strong><strong style="font-size:17px;" data-v-2505e99a>└── </strong><strong style="font-size:17px;" data-v-2505e99a>kong.txt</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>方法四:</strong><strong style="font-size:17px;" data-v-2505e99a>恢复所有的文件</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@centos6 test]# rm -rf RECOVERED_FILES/</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 test]# extundelete /dev/sdb1 --restore-</strong><strong style="font-size:17px;" data-v-2505e99a>all</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@centos6 test]# tree RECOVERED_FILES/</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>删除前后的数据:</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>eextundelet在恢复文件的时候能不能自动创建空文件和目录</strong><strong style="font-size:17px;" data-v-2505e99a>?</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span><strong style="font-size:17px;" data-v-2505e99a>答:</strong><strong style="font-size:17px;" data-v-2505e99a>不能。</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:24px;" data-v-2505e99a>4</strong><strong style="font-size:24px;" data-v-2505e99a>.3 </strong><strong style="font-size:24px;" data-v-2505e99a>使用x</strong><strong style="font-size:24px;" data-v-2505e99a>fs_undelete</strong><strong style="font-size:24px;" data-v-2505e99a>恢复误删除文件</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>XFS文件系统的取消删除工具——</strong><strong style="font-size:17px;" data-v-2505e99a>xfs_undelete</strong><strong style="font-size:17px;" data-v-2505e99a>。</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>xfs</strong><strong style="font-size:17px;" data-v-2505e99a>_</strong><strong style="font-size:17px;" data-v-2505e99a>undelete尝试恢复xfs文件系统中标记为已删除的所有文件。</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>恢复的文件存储在子目录中的另一个文件系统中,默认情况下,相当于当前目录xfs</strong><strong style="font-size:17px;" data-v-2505e99a>_</strong><strong style="font-size:17px;" data-v-2505e99a> undelete。文件名无法恢复,它被作为删除时间、inode编号和猜测的文件扩展名。</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>环境需求</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>先添加一块硬盘,后面会用到</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>xfs_undelete是一个小的Tcl脚本,因此需要一个Tcl解释器。它使用了Tcl-8.6的一些特性,所以至少需要这个版本,tclib包用于解析命令行。</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>下载t</strong><strong style="font-size:17px;" data-v-2505e99a>cl8.6</strong><strong style="font-size:17px;" data-v-2505e99a>,t</strong><strong style="font-size:17px;" data-v-2505e99a>cllib</strong><strong style="font-size:17px;" data-v-2505e99a>和x</strong><strong style="font-size:17px;" data-v-2505e99a>fs_undelete</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>Tcl download | SourceForge.net</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>https://core.tcl-lang.org/tcllib/technote/cd3a11cde64a19fcd</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>https://github.com/ianka/xfs_undelete</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>上传软件包到ce</strong><strong style="font-size:17px;" data-v-2505e99a>ntos7</strong><strong style="font-size:17px;" data-v-2505e99a>系统</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>安装t</strong><strong style="font-size:17px;" data-v-2505e99a>cl</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# tar xvf tcl8.6.11-src.tar.gz</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# cd tcl8.6.11/unix/</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]#https://www.bilibili.com/read/configure</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# echo \)?
[root@xuegod63 ~]# make -j 4 && make install
[root@xuegod63 ~]# echo \(?</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>时间很长</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>使t</strong><strong style="font-size:17px;" data-v-2505e99a>clsh</strong><strong style="font-size:17px;" data-v-2505e99a>全局生效加入p</strong><strong style="font-size:17px;" data-v-2505e99a>ath</strong><strong style="font-size:17px;" data-v-2505e99a>变量</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# mv </strong><strong style="font-size:17px;" data-v-2505e99a>/</strong><strong style="font-size:17px;" data-v-2505e99a>root/tcl8.6.11 /root/tcl</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# vim /etc/profile</strong><strong style="font-size:17px;" data-v-2505e99a> # 在文件最后追加以下内容,永久生效</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>export PATH=/root/tcl/unix/:\)PATH
[root@xuegod63 ~]# source /etc/profile #重新加载配置文件,使用配置生效
[root@xuegod63 ~]# echo \(PATH</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>安装t</strong><strong style="font-size:17px;" data-v-2505e99a>cl</strong><strong style="font-size:17px;" data-v-2505e99a>lib</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# tar xf tcllib-1.20.tar.gz</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 ~]# cd tcllib-1.20/</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 tcllib-1.20]# https://www.bilibili.com/read/configure</strong></p><p data-v-2505e99a data-v-5b474d2a><strong style="font-size:17px;" data-v-2505e99a>[root@xuegod63 tcllib-1.20]# echo \)?
[root@xuegod63 tcllib-1.20]# make -j 4 && make install
[root@xuegod63 tcllib-1.20]# echo $?
安装xfs_undelete
[root@xuegod63 tcllib-1.20]# cd
[root@xuegod63 ~]# unzip xfs_undelete-master.zip
[root@xuegod63 ~]# cd xfs_undelete-master/
[root@xuegod63 xfs_undelete-master]# https://www.bilibili.com/read/xfs_undelete -h #查看帮助信息
挂载点创建一些测试文件,文件里要有内容,然后删除几个
[root@xuegod63 xfs_undelete-master]# cd
[root@xuegod63 ~]# gdisk /dev/sdb
[root@xuegod63 ~]# mkfs.xfs /dev/sdb1
[root@xuegod63 ~]# mkdir /testsdb1
[root@xuegod63 ~]# mount /dev/sdb1 /testsdb1
[root@xuegod63 ~]# mkdir /testsdb1/kong
[root@xuegod63 ~]# touch /testsdb1/kong.txt
[root@xuegod63 ~]# cp /etc/passwd /testsdb1/
[root@xuegod63 ~]# cp /etc/passwd /testsdb1/kong
[root@xuegod63 ~]# echo "hello world" > /testsdb1/hello.txt
[root@xuegod63 ~]# ls /testsdb1
[root@xuegod63 ~]# rm -rf /testsdb1/*
[root@xuegod63 testsdb1]# cd
[root@xuegod63 ~]# umount /testsdb1
[root@xuegod63 ~]# cd xfs_undelete-master/
[root@xuegod63 xfs_undelete-master]# https://www.bilibili.com/read/xfs_undelete /dev/sdb1
[root@xuegod63 xfs_undelete-master]# cd xfs_undeleted/
[root@xuegod63 xfs_undeleted]# ls
[root@xuegod63 xfs_undeleted]# head 2021-06-08-11-02_68.txt
hello world
直接执行脚本首先会以只读的方式重新挂载,然后恢复,恢复的不是原文件名,但是内容是一样的。
注意需要进入目录才能看到
注意:不会恢复目录和空文件
也可以恢复数据到指定的目录
[root@xuegod63 xfs_undeleted]# cd ..
[root@xuegod63 xfs_undelete-master]# https://www.bilibili.com/read/xfs_undelete -o /opt /dev/sdb1
4.4 实战:使用xmanager等远程连接工具管理Linux
4.4.1 Linux下常用远程连接工具介绍
4.4.2 xmanager 使用方法
安装以后打开
1、xshell使用方法
例1:连接一台新的服务器
例2:调整xshell字体大小
例3:调整rz和sz命令的默认路径
例4:解决Xshell中小键盘无法打出数字的问题
例5:解决Xshell不能使用退格、删除键的问题
2、xftp使用方法
例1:上传一个文件夹到Linux服务器上
3、xstart使用方法
方法1:使用xshell直接运行图形界面的程序
例1:[root@xuegod63 ~]# gnome-terminal
例2:[root@xuegod63 ~]# firefox &
方法2:使用xstart调用桌面
注:使用MK给的xmanger5安装后,后期运行,提示更新到新版本, 你不要更新,更新,有可能序列号就不能使用了。
https://www.netsarang.com/zh/free-for-home-school/
也可以下载官方免费版
更多学习资料以及视频资料请移步至公众号【学神来啦】

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/189847.html