发新话题
打印

Ubuntu Linux学习笔记

清北,追求完美用户体验——品质驱动 诚信导航 服务至上 技术领先
清北服务网站  http://QuickBest.com.cn

快速编辑 Shell 命令行

来源: 点击进入

作者:robinswan
来自:LinuxSir.Org
摘要:对于 Linux / Unix 这类从内核得到整体架构,再到哪怕是最小的一个应用小软件都以文本来支撑的系统,没有娴熟的命令行技巧确实是玩不转的。希望本文能对你提高命令行使用效率有帮助。
目录
前言;
一、自动补齐:[Tab]
二、查找和执行历史命令:[Ctrl + r]
三、取消本次命令输入:[Ctrl + c]
四、光标跳转快捷键;
五、编辑命令的快捷键;
六、配置提示;
七、综合练习;
八、关于本文;
九、相关文档;

++++++++++++++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++++++++++++++

前言
快速编辑 Shell 命令行
想起听得最多的就是 *nux 的初学者说最烦就是 Linux / Unix 的命令行,所以就有了这个题目。如果你是个性急的人可以先尝试下文章结尾的综合练习体会一下 Shell 的快捷键,也许这样再看全文会更有趣。
其实,命令行适应了,可能比图形界面更有效率。至少对我来说是这样,我现在一看见那些所谓的 IDE 就有眼花缭乱感觉,真正用来写代码的面积都被挤到只有一包烟那么大了,呵呵。有时为找个选项花很长时间找对话框,也很痛苦吧。
为什么那么多人害怕命令行呢?
我想最大的问题就是很多人觉得命令行的输入和编辑都很“慢”,很低效。但是对于 Linux / Unix 这类从内核得到整体架构,再到哪怕是最小的一个应用小软件都以文本来支撑的系统,没有娴熟的命令行技巧确实是玩不转的。希望本文能对你提高命令行使用效率有帮助。
但是由于 Linux / Unix 的发行版实在是太多,Shell 的主流版本也有好几个,所以,本文所说的内容,可能和你的系统有出入,但是思想是一样的,在你自己的平台上摸索一下,你也会找到你的平台太下编辑命令行的技巧和规律。
另外,Shell 的很多快捷键和 VIM, Emacs 的快捷键是相通的,所以,熟练使用 Shell 快捷键,对适应 *nux 下的其他软件有很好的启示作用。
命令行的技巧除了本文提到的,还有很多,你可以自己慢慢积累,收集和体会。当然如果你经常需要输入很繁琐的命令,那么建议你自己写 Shell 脚本,定义 function, alias 等技巧来实现。
我目前使用的系统配置
内核:            2.6.14-gentoo-r5;
系统发行版:       Gentoo Linux -- 2005.1;
Shell 版本:      Gun bash -- 3.00.16
X Server:        Xorg -- 6.8.2;
窗口系统:         Gnome -- 2.10.1;
终端:            gnome-terminal -- 2.10.0;
现在就开始吧

一、自动补齐:[Tab]

这个技巧很多人都应该会了,就是当输入命令,目录或者是文件名的时候按 [Tab] 键。系统就会帮你补齐可能要输入的东西,如果有多个选择系统会列表出来。你可以看清楚之后再多输入一个或多个 charactor ,再按[Tab]。
实验:
$ ec

按[Tab], 补齐为:
$ echo

二、查找和执行历史命令:[Ctrl + r],  [Ctrl + p],  [Ctrl + n]

在终端中按捉 [Ctrl] 键的同时 [r] 键,出现提示:(reverse-i-search),此时你尝试一下输入你以前输入过的命令,当你每输入一个字符的时候,终端都会滚动显示你的历史命令。当显示到你想找的合适的历史命令的时候,直接[Enter],就执行了历史命令。
另外, [Ctrl + p][Ctrl + n] 快速向前或向后滚动查找一个历史命令,对于快速提取刚刚执行过不久的命令很有用。
实验:

$ echo "hello, world" [Enter]
$ hello, world
[Ctrl + r ] (接着输入 echo)

(reverse-i-search)`ch': echo "hello,world" [Enter]
$hello,world

三、取消本次命令输入:[Ctrl + c]

这个快捷键可以使你从一个可能你已经厌烦了的命令中安全地退出!!也许是个不值一提的小技巧,但是经验告诉我它很有用。很多 Unix 初学者会习惯性地按 [Enter] 以摆脱困境,但是说不定就会发生灾难性的事件,譬如删除了一个重要的配置文件:(

四、光标跳转快捷键:

为了方便大家记忆,加点英语助记语在后面 :)

[Ctrl + a]        跳转至命令行首    Ahead of line
[Ctrl + e]        跳转至命令行尾    End of line
[Ctrl + f]        向前跳转一个字符  jump Forward one character
[Ctrl + b]        向后跳转一个字符  jump Backward one character
[Alt + f]        向前跳转到下一个字的第一个字符
[Alt + b]        向后跳转到下一个字的第一个字符

五、编辑命令的快捷键:

[Ctrl + w]        向后删除一个字,用来对付刚刚输入的错误字很有用
[Ctrl + u]        从光标当前位置删除所有字符至行首
[Ctrl + k]        从光标当前位置删除所有字符至行尾
[Ctrl + d]        删除光标当前位置的字符
[Ctrl + y]        粘贴最后一个被删除的字
[Alt + d]        删除从光标当前位置,到当前字的结尾字符

六、配置提示;

如果你是用 Gnome 下的终端窗口 gnome-teminal ,上面的 Gnu Shell 快捷键会跟 Gnome 的窗口快捷键有冲突。
那么你需要做如下配置:
在 gnome-terminal 的菜单栏中选 "Edit" -] "Keyboard Shortcuts ..."打开 "Keyboard Shortcuts" 对话框,并勾选下面两个复选项

"Disable all menu access keys (such as Alt+f to open File menu)"
"Disable menu shortcut key (F10 by default)"
至于 KDE 下应该怎么配 KDE 的终端窗口,请熟悉 KDE 的朋友补充一下,我很久没用 KDE 了,也没装。

七、综合练习;

上面列举的快捷键,练习2~3天应该就能熟练,为了大家快速理解和记忆,我们来做个小小的综合练习:
第一步:echo

$ echo "hello, world." [Enter]
我们先输入 echo "hello, world" 这个命令,然后回车,也就看到了终端的输出:

$ hello, world.
第二步:[Ctrl + r]
我们试试找出历史命令 echo "hello, world.",这时,我们按[e],[c],[h]这三个键,这个历史命令大概已经找到了,
终端的显示应该是这样:

(reverse-i-search)`ech': echo "hello,world."
现在,如果[Enter]就会再一次执行这个命令,但我们现在来练习一下命令行的编辑。

第三步:[Ctrl + a]

这样,我们就取出了历史命令 echo "hello, world.",并且将光标定位到行首,此时,光标应该在 echo 命令的 e 字符上高亮。
终端的显示应该是这样:

$ echo "hello,world"


第四步:[Alt + d]
删除了命令 echo, 并且光标仍然在行首,终端显示为:

$ "hello, world."


第五步:输入命令 "printf"
我们尝试一下用 Posix 的系统调用 printf 来替代 shell 命令 echo,输入[p][r][n][t][f],此时终端显示为:

$ printf "hello, world."
并且光标在 f 字符后面高亮。

第六步:[Ctrl + e]

光标跳转到命令行尾部。

第七步:[Ctrl + b]

光标后退一个字符,此时光标应处于后双引号 " 处高亮。

第八步:输入换行转义符 "\n"

输入[\][n] ,此时的终端显示应该为:
$ printf "hello, world.\n"
可以[Enter]执行了。

八、关于本文;

当你熟练的时候,上面的步骤应该在20秒之内就完成了吧,希望大家都能成为命令行的高手!!!

九、相关文档;

《快速编辑 Shell 命令行》
《Linux Shell简介》
《Linux 命令及可执行程序路径的设置》


By robinswan at 2006/01/04 - 20:22 | Linux | 基础知识 | 命令/SHELL/PERL
清北,追求完美用户体验——品质驱动 诚信导航 服务至上 技术领先
清北服务网站  http://QuickBest.com.cn

待整理: 在USB盘上打造自己的Linux发行版

来源: 点击进入

作者:yhyzh
来自:LinuxSir.Org
摘要:本文是一个自己动手制作在USB盘运行的Linux实例,有兴趣的弟兄不妨看看;

目录
前言
1、我的制作环境;
2、我的基本思路;
3、制作过程;
致谢
关于本文;
相关文档;
清北,追求完美用户体验——品质驱动 诚信导航 服务至上 技术领先
清北服务网站  http://QuickBest.com.cn

待整理: shorewall 企业防火墙的完美实现

清北,追求完美用户体验——品质驱动 诚信导航 服务至上 技术领先
清北服务网站  http://QuickBest.com.cn

待整理: 并不神秘的 Slackware

来源: 点击进入

作者:windrose
来自:LinuxSir.Org
简介:本文较为全面地介绍了Slackware设计思想及其显著特色,力图吸引更多人来了解和尝试这个优秀的发行版。本次发布于LinuxSir.Org 首面上,只是把这一最为优秀系统介绍给大家;

目录
第一篇 导言
第二篇 Slackware的设计哲学──KISS
第三篇 关于中文化
第四篇  基于Slackware的项目
第五篇  网络资源
第六篇  结束语
关于本文
相关文档
清北,追求完美用户体验——品质驱动 诚信导航 服务至上 技术领先
清北服务网站  http://QuickBest.com.cn

用GRUB(包括WINGRUB)命令行模式引导安装Linux

来源: 点击进入

作者:北南南北
来自:LinuxSir.Org
提要:Linux的安装过程的引导有几种方法,一种是在DOS下通过loadlin进行安装;一种是通过lilo系统引导管理器进行引导;还有一种就是通过系统引导管理器GRUB来引导安装,目前大多是用这种方法,也是最方便和最容易的办法。GRUB有两个版本,一个是Windows的,也被称为GRUB FORDOS或WINGRUB,另外就是Linux自带的GRUB了。本文主要谈如何通过GRUB(包括WINGRUB)的命令行模式来引导安装Linux;

目录
清北,追求完美用户体验——品质驱动 诚信导航 服务至上 技术领先
清北服务网站  http://QuickBest.com.cn

如何用rsync修复不完整的Linux光盘映像文件

来源: 点击进入

作者:北南南北
来自:LinuxSir.Org
提要:当我们下载Linux安装盘的映像文件file.iso时,有时会出现光盘映像下载完成后,与官方提供的验证码不一致;还可能本来是3G大小的文件,下载下来却是2G。如果我们一切从头开始下载,代价实在是太大了。所以我们必须找一个工具来同步这个文件,使其与官方提供的验证码相对应;这时我们就引出了rsync工具;
目录

++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++


1、光盘映像下载过程中的验证码问题存在的原因;

有时是因为下载工具不支持所致使,比如有些下载工具不支持大于2G的文件,所以会出现本来是3G的文件,结果他就下载了2G,文件的不完整导致验证码的不一致;另外一方面有时我们选择的下载地址所提供的文件有问题,也会导致下载的file.iso与官方所提供的验证码不一致;

举例:

比如,我们在Fedora 官方看到的Fedora Core 5.0 的SHA1验证码如下:
ed9a852cf77250c3ae111c621d350af5c0b0a29b FC-5-i386-DVD.iso
当我们在某个FTP下载后发现与官方的不一致,结果完全不能安装使用;这时我们是重新下载,还是找一种办法来解决?答案当然是找办法来解决;所以我们这时引入了rsync 这个工具;

2、用rsync工具同步解决映像不完整问题;

大家都知道rsync 最主要的功能就是同步备份和镜像功能,前提是得有rsync服务器;我所说的意思是rsync并不能同步ftp服务器上的内容,我想这个大家应该明白;
目前大多数Linux发行版都有rsync服务器,我们就可以利用rsync服务器上的源来同步不完整的光盘映像;
当然也能用rsync下载rsync服务器上的文件,我们用rsync的同步修复功能来解决我们所面对的问题,说实在的这个功能真的不错;

2.1   寻找Linux发行版的rsync服务器;

因为rsync 并不能同步ftp和web服务器上的映像文件,所以我们根本没有能力用光盘映像所处的FTP或WEB服务器上的地址;我们得找有类似下面的地址;
rsync://mirrors.kernel.org
只有在rsync服务器上找到我们所需要的映像才能行,寻找的办法是去官方发行版所提供的服务器列表上去找;

2.2  rsync 进入服务器的方法;

比如我通过wget下载的FC-5-i386-DVD.iso有问题,我想用rsync来同步解决;所以首先就要找拥有FC-5-i386-DVD.iso的rsync服务器;于是我到Fedora.redhat.com的下载列表中寻找 ,发现 rsync://mirrors.kernel.org上有这个文件;所以我们先要进入这台服务器;请不要把地址后面的/省略,这样不会列出服务器或服务器目录中的文件;
[root@localhost beinan]# rsync  rsync://mirrors.kernel.org/
mirrors         All mirror sites
debian          Debian Linux distribution mirror
redhat          RedHat mirror
fedora          Fedora - RedHat community project
fedora.us       fedora.us - Additional stuff for Fedora
centos          CentOS - An Enterprise-class Linux distribution
opensuse        OpenSUSE - Novell's community project
我们发现在这个服务器上有fedora的镜像;所以我们一级一级的进去;执行下面的命令;
[root@localhost beinan]# rsync  rsync://mirrors.kernel.org/fedora/
drwxr-xr-x        4096 2005/02/03 08:05:26 .
drwxr-xr-x        4096 2006/03/17 00:41:43 core
drwxr-sr-x        4096 2006/03/18 03:05:05 extras
... ...
[root@localhost beinan]# rsync  rsync://mirrors.kernel.org/fedora/core/5/i386/iso/
drwxr-xr-x        4096 2006/03/15 13:39:03 .
-rw-r--r--  3253669888 2006/03/15 12:49:55 FC-5-i386-DVD.iso
-rw-r--r--   687235072 2006/03/15 12:47:10 FC-5-i386-disc1.iso
-rw-r--r--   700618752 2006/03/15 12:48:05 FC-5-i386-disc2.iso
-rw-r--r--   721016832 2006/03/15 12:50:35 FC-5-i386-disc3.iso
-rw-r--r--   720910336 2006/03/15 12:51:46 FC-5-i386-disc4.iso
-rw-r--r--   387753984 2006/03/15 12:52:16 FC-5-i386-disc5.iso
-rw-r--r--    79122432 2006/03/15 12:31:59 FC-5-i386-rescuecd.iso
-rw-r--r--         671 2006/03/15 13:38:25 SHA1SUM
我们发现了FC-5-i386-DVD.iso,这时我们要进行下一个过程,同步文件;

2.3  用rsync 同步文件的语法;

首先我们要进入本地机存放以前下载好,但有问题的 FC-5-i386-DVD.iso的目录(还是接着前面的例子),然后再执行类似下面的命令;

命令格式如下:


rsync -vzP  映像文件的rsync地址    你以前下载下来的文件
比如我以前下载的  FC-5-i386-DVD.iso的有问题,这时我想用rsync 同步来修正,所以我把FC-5-i386-DVD.iso文件放入了一个名为fc5iso的目录中;
[root@localhost beinan]# cd fc5
[root@localhost fc5]# ls -la
drwxr-xr-x   2 root   root         136 2006-03-26 04:05 .
drwxr-xr-x  20 beinan beinan        472 2006-03-26 03:56 ..
-rwxr-xr-x   1 beinan beinan  2276458496 2006-03-26 03:47 FC-5-i386-DVD.iso
然后执行;
[root@localhost fc5]#rsync -vzP rsync://mirrors.kernel.org/fedora/core/5/i386/iso/FC-5-i386-DVD.iso FC-5-i386-DVD.iso
可能要等几分钟才相关的信息出现,也会出现下载提示之类的;如果有下载之类的信息,就不必管他了,这说明已经正常工作了;我们有的只是等待;如果我们再看一下这个目录都有什么,我们就明白了。rsync的原理是先从本地已存的文件中下载,然后对照服务器的文件,如果已经下载的文件不完整,他就从服务器上下载;如果有错误的,就修正;他会先产生一个临时文件,也就类似下面的... ...
[root@localhost fc5]# ls -la
ls -la
总用量 5253889
drwxr-xr-x   2 root   root         136 2006-03-26 04:05 .
drwxr-xr-x  20 beinan users        472 2006-03-26 03:56 ..
-rwxr-xr-x   1 root   root  2276458496 2006-03-26 03:47 FC-5-i386-DVD.iso
-rwx------   1 root   root  3103522816 2006-03-26 08:59 .FC-5-i386-DVD.iso.SI37yU
等完成后,会有类似下面这样的提示,然后rsync会自动删除.file临时文件,更新 FC-5-i386-DVD.iso。
FC-5-i386-DVD.iso
  3253669888 100%  164.78kB/s    5:21:22  (1, 100.0% of 1)
wrote 381831 bytes  read 953051797 bytes  48730.35 bytes/sec
total size is 3253669888  speedup is 3.41
经过这个简单的过程,我们就把有问题的文件同步更新了。然后我们再来检测文件的完整性;这样就可以修正存在问题的文件,是不是能行,只有尝试了才知道;
注意:同步文件时,要有大一点的空间;因为同步的过程中,rsync会创建一个和你下载文件同等大小的临时文件;

3、rsync 的版本简说;

rsync有Windows版本,Linux大多发行版都有自带,安装上就OK了;不过我得说一下Windows版本;下载客户端就行;
http://www.samba.org/rsync/download.html

4、关于本文;

一切为了应用,前几天下载了FC5的DVD后,发现DVD不能用,所以想到了rsync可能同步修复它,于是就尝试了,结果能行,所以写此文。呵。。我写的太多了,其实就是一句话就OK,我却写了好多。看来水平... ...  :(

5、参考文档;

http://www.samba.org/rsync/documentation.html

6、相关文档;


By 北南南北 at 2006/03/30 - 11:48 | 软件管理 | 基础知识
清北,追求完美用户体验——品质驱动 诚信导航 服务至上 技术领先
清北服务网站  http://QuickBest.com.cn

待整理: Linux下缓存服务器的应用

来源: 点击进入

作者:tonyvicky
来自:LinuxSir.Org
摘要:由于数据库存储的数据量越来越大,查询速度也就变的越来越慢,因此就有了缓存服务器应用的必要,本文是介绍Memcached的安装以及简单的使用。
本文只介绍memcached的PHP的API,想查看其他关于Memcached的API文档案,请访问 http://www.danga.com/memcached/

目录
清北,追求完美用户体验——品质驱动 诚信导航 服务至上 技术领先
清北服务网站  http://QuickBest.com.cn

reiserfs文件系统反删除(Undelete)操作的实践

来源: 点击进入

作者:北南南北
来自:LinuxSir.Org
摘要: 本文主要是讲述在reiserfs 文件系统下,由于误操作而删除的数据的恢复方法的实践;通过猜想在reiserfs 文件系统下丢失文件的若干假设事故,来尝试恢复数据;本文用于存档之用,毕竟我个人最喜欢的是reiserfs 文件系统,以备后用;

目录索引
一、关于Linux的文件系统(Filesystem)
二、reiserfs 文件系统是否支持undelete操作来恢复数据;
三、reiserfs 文件系统恢复数据流程;
四、关于本文;
五、参考文档;
六、相关文档;

++++++++++++++++++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++++++++++++++++++


一、关于Linux的文件系统(Filesystem)

请参考: 《Linux 文件系统概述》

二、reiserfs 文件系统是否支持undelete操作来恢复数据;

一般删除数据有两种情况,一种是通过rm 命令来删除的;另一种是通过格式化销毁数据的,在reiserfs 文件系统中,恢复这两种误操作而引起的数据损失的情况还是有点区别;

1、由于误操作rm 删除命令而造成数据的丢失的恢复情况;

通过实践来看,通过rm 删除数据,我们能通过reiserfs的修复检测工具来恢复,如果存储设备没有任何问题,或者文件系统没有坏块(bad block)的情况下是百分之百的恢复;

2、由于格式化硬盘所带来的数据损失的恢复情况;

我测试了格式化存储备来测试恢复reiserfs文件系统所丢失的数据,我是在移动硬盘上做的实践;比如我的移动硬盘上只有一分区,并且是基于reiserfs文件系统的;我存放了一百多M的数据,然后再用mkreiserfs或mkfs.reiserfs工具来格式化这个硬盘分区。如果这时我们发现重建了硬盘分区的文件系统是误操作。这时想通过reiserfs的修复工具来修复,能挽回大多数数据;但并不是百分百,有时也会是百分百的成功,就看你的运气了;
如果我是把这有reiserfs 文件系统的分区,格式化为其它的文件系统了,这时如果发现是误操作,成功几率就极低了;或者说大多是不能成功;
如果我们把硬盘的分区表也重建了,如果这时再想起是误操作,恢复的reiserfs文件系统的可能性也是极低的,或者说想通过reiserfs 文件系统工具的恢复成功率为零;但有时或多或少也能恢复出一点,或者恢复的是很久很久以前的数据。呵,这事是有点怪;
如果您是由于重新分区导致的数据损失,首先可能您要恢复分区表到以前状态,可能Windows中有这方面的工具;在Linux系统下也应该有这样的工具,但都是商业的。Windows中好的数据恢复工具也应该是商业性的。

3、在reiserfs 文件系统中,undelete恢复数据情况的约定;

我们前面已经说过了,由于rm指令的误操作而引起的数据损失,是能恢复大多数,或百分之百,也就是第一种情况;另外如果原来的硬盘分区是reiserfs 的,由于您误操作使用mkreiserfs 或mkfs.reiserfs 格式化致使数据的损失也应该划在这个约定之内,也是可以恢复大多数数据,但这种情况应该比较少;

三、reiserfs 文件系统恢复数据流程;


1、准备修复盘和大容量存储设备;


1)支持reiserfs 文件系统的livecd 或系统修复盘;

如果您用的是移动存储,是reiserfs文件系统上的损失,您就直接用您当前用的linux系统就能修复,但得支持reiserfs 文件系统才行。呵,这不是废话吗?不支持reiserfs 文件系统的Linux,我的移动硬盘用reiserfs 有什么用。
livecd 是最好的,只要支持reiserfs文件系统的livecd 就OK;另外我发现slackware 安装盘中的第一张是也是可以用;当然不排除其它发行版的安装盘和修复盘,只要能用就行;

2)存储设备;

比如您损失数据的硬盘分区是 9G,所以您得找个最少得找个未使用空间是10G的硬盘(或硬盘分区)吧;否则怎么能容得下数据损失的镜像呢?所以最好找一个大容量的硬盘或硬盘分区做准备;
如果您只是在几百M的移动硬盘上的损失,是不是找个地方就容下了;这种情况就好办多了;

2、恢复数据的过程;


1)用livecd 开机进入系统,或者用修复盘进入系统;

livecd 比较好办,他本来就是一个在光盘上运行的系统;您可以找一个发行版本下载;
请到: http://www.frozentech.com/content/livecd.php
可以选择slax 或 Knoppix ;
您也可以用slackware的第一张盘,一路enter后,就出现 bash#字样,这样就OK了;当然您也可以把硬盘挂在有Linux的机器上来恢复,总之方法多的是;我们无非是借助一个支持reiserfs文件系统的Linux系统来恢复数据,这个道理我们应该理解;

2)用dd 工具来做硬盘分区的镜像;

为什么数据损失的硬盘分区的镜像,能不能直接修复?直接修复也是可以的,但如果出现错误,恢复数据的可能性就很低了。除非我们能保证损失数据的硬盘分区没有任何bad block,或者在此硬盘分区上没有任何物理和逻辑坏道;另外我们还要确保百分之百不会再次操作失误;所以对硬盘分区镜像是极为重要的,也就是说用镜像盘来恢复数据,以保证原有数据的安全性和可靠性;
还有一点值得一说的是,请不要挂载有数据损失的硬盘分区,也不要再次向其写入数据;否则恢复数据的成功率会降低;查看是否有自动挂载分区,请用df -h 来查看;如果发现已经挂载了,就用  umount 卸载;
我们要弄明白是哪个分区的数据损失了,您可以用fdisk -l 来查看分区表;比如我十分明确的认为 /dev/sda1 的数据损失了;这时我们就要做/dev/sda1的镜像;
然后我们得准备一个有空间的分区,是linux的文件系统的,比如ext3或reiserfs都行;只是为了保存dd出来的分区镜像;我们用mount 来挂载用来存储镜像文件的分区;这在准备工作中已经提到了;比如我想用 文件系统为reiserfs的硬盘分区/dev/hda8来存放/dev/sda1的镜像,那就挂载/dev/hda8;
bash# mkdir hda8 注:创建一个目录
bash# mount -t reiserfs  /dev/hda8 hda8     注:把/dev/hda8 挂载到hda8目录上;
bash# df -h     注:查看/dev/hda8是否挂载上了;
bash# cd hda8       注:进入hda8目录;
bash# dd if=/dev/sda1  conv=noerror > sda1.img      注:做 /dev/sda1 的整个分区的镜像;

3)通过reiserfsck或fsck.reiserfs 镜像来恢复数据;

bash# losetup -f  注:查询哪个loop设备是空的;
/dev/loop0  注:发现有一个空的是/dev/loop0 ;
bash# losetup /dev/loop0 sda1.img  
注:把sda1.img 镜象关联到/dev/loop0的设备中;
bash# reiserfsck --rebuild-tree -S -l undelete.log  /dev/loop0   
注:通过reiserfsck 来修复,-S 表示整个分区,-l后面是接日志输出,最后是/dev/loop0设备;因为我们前面把sda1.img关联到了/dev/loop0设备中,这样/dev/loop0就拥有了sda1.img的所有属性;这和直接通过下面命令修复的效果是一样的;但这样通过镜像装载修复的方法主要是为了安全;
bash# reiserfsck --rebuild-tree -S -l undelete.log  /dev/sda1
注:这样直接操作也行,如果 /dev/sda1上有bad block就麻烦了;可能会损伤到/dev/sda1 数据的安全,明白了吧;
然后会出现类似如下的提示:

reiserfsck 3.6.19 (2003 www.namesys.com)
*************************************************************
** Do not  run  the  program  with  --rebuild-tree  unless **
** something is broken and MAKE A BACKUP  before using it. **
** If you have bad sectors on a drive  it is usually a bad **
** idea to continue using it. Then you probably should get **
** a working hard drive, copy the file system from the bad **
** drive  to the good one -- dd_rescue is  a good tool for **
** that -- and only then run this program.                 **
** If you are using the latest reiserfsprogs and  it fails **
** please  email bug reports to reiserfs-list@namesys.com, **
** providing  as  much  information  as  possible --  your **
** hardware,  kernel,  patches,  settings,  all reiserfsck **
** messages  (including version),  the reiserfsck logfile, **
** check  the  syslog file  for  any  related information. **
** If you would like advice on using this program, support **
** is available  for $25 at  www.namesys.com/support.html. **
*************************************************************
Will rebuild the filesystem (/dev/loop0) tree
Will put log info to 'undelete.log'
Do you want to run this program?[N/Yes] (note need to type Yes if you do): Yes
注:请输入Yes,这样就进行修复了;
详细情况如下:
Replaying journal..
Reiserfs journal '/dev/loop0' in blocks [18..8211]: 0 transactions replayed
###########
reiserfsck --rebuild-tree started at Thu Dec  1 21:01:53 2005
###########
Pass 0:
The whole partition (251984 blocks) is to be scanned
Skipping 8218 blocks (super block, journal, bitmaps) 243766 blocks will be read
0%....20%....40%....60%....80%....100%                        left 0, 6588 /sec
        "r5" hash is selected
Flushing..finished
        Read blocks (but not data blocks) 243766
                Leaves among those 56
                Objectids found 77
Pass 1 (will try to insert 56 leaves):
Looking for allocable blocks .. finished
0%....20%....40%....60%....80%....100%                          left 0, 56 /sec
Flushing..finished
        56 leaves read
                45 inserted
                11 not inserted
        non-unique pointers in indirect items (zeroed) 633
Pass 2:
0%....20%....40%....60%....80%....100%                           left 0, 0 /sec
Flushing..finished
        Leaves inserted item by item 11
Pass 3 (semantic):
Flushing..finished
        Files found: 42
        Directories found: 12
Pass 3a (looking for lost dir/files):
Looking for lost directories:
Looking for lost files:0 /sec
Flushing..finished 48, 0 /sec
        Objects without names 16
        Dirs linked to /lost+found: 1
        Files linked to /lost+found 15
Pass 4 - finished      done 44, 0 /sec
Flushing..finished
Syncing..finished
###########
reiserfsck finished at Thu Dec  1 21:02:31 2005
###########

4)挂载loop 设备,查看数据恢复情况;

bash# mkdir  recoversda1 注:创建一个目录;
bash# mount /dev/loop0 recoversda1  注:把/dev/loop0挂载到 recoversda1 上;
bash# more undelete.log  注:查看恢复日志;
bash# cd recoversda1   注:进入recoversda1目录查看数据恢复情况;
一般的情况下,如果您是rm 删除的东西,大多会百分之百的恢复了,有些内容可能会恢复到lost+found的目录中,要通过恢复日志来对比查看;
如果您认为您的数据恢复的差不多了,这时就可以把损失数据的硬盘分区挂载上,然后拷贝已经恢复的数据过去;
bash# cd .. 注:从 recoversda1 退出,返回上级目录;
bash# mkdir sda1 注:创建sda1目录;
bash# mount /dev/sda1 sda1  注:挂载 /dev/sda1 到sda1目录上;
下面的就是从recoversda1目录中,把已经恢复的数据复制到数据损失的硬盘分区上;这个工作就简单了吧;cp命令应该会用吧,如果真的不会,那我也没有办法了,看来你和我的水平真的差不多;哈哈。。。。

5)恢复好数据的扫尾工作;

要正常卸载一系列挂载的盘;
bash# umount /dev/hda8
bash# umount /dev/sda1
bash# umount /dev/loop1
bash# losetup -d /dev/loop0
... ...
如果出现设备忙的提示,可能是您正处于挂载目录中;退出就好了;
四、关于本文;
这篇实践文档是根据洋人提供的方法实践而来,如果您认为北南在抄袭,那您也一样可以抄袭;
五、参考文档;
http://www.martian.org/marty/archives/000888.html
http://marc.theaimsgroup.com/?l=reiserfs&m=104861318421306&w=2
http://www.antrix.net/journal/techtalk/reiserfs_data_recovery_howto.html
六、相关文档;
《有关ext2文件系统下反删除(Undelete)操作恢复数据的文档》
《Linux 文件系统概述》


By 北南南北 at 2005/12/01 - 22:47 | Linux | 基础知识
清北,追求完美用户体验——品质驱动 诚信导航 服务至上 技术领先
清北服务网站  http://QuickBest.com.cn
$ /etc/init.d/networking --help
Usage: /etc/init.d/networking {start|stop|restart|force-reload}

$ man ifup
    ifup - bring a network interface up
    ifdown - take a network interface down
    sudo ifup eth0 或 sudo ifconfig eth0 up
    sudo ifdown eth0 或 sudo ifconfig eth0 down
    (注: ifconfig eth0 up/down的办法有时候是不是不太好用? )
   
mplayer播放时快捷键
    f: 全屏模式;
    o: 显示 当前播放进度/影片全长;
   
$ man uptime
    Tell how long the system has been running.
   
$ man top
    display Linux tasks
清北,追求完美用户体验——品质驱动 诚信导航 服务至上 技术领先
清北服务网站  http://QuickBest.com.cn
发新话题