一 : 恢复linux下被删除的syslog—/var/log/messages文件方法
Linux新手容易犯的一个错误是把日志文件给直接删除,而不是删除日志文件的内容。
直接删除日志文件往往导致新产生的日志记录无法被写入到日志文件中(因为它已经被删除了),而仅仅重新新建(touch)同样名字的文件是解决不了问题的。
本文以Unbutu系统为例,介绍如何恢复被误删除的syslog文件:
首先,在以root用户执行如下lsof命令,查询打开/var/log/messages文件的进程的进程ID(PID)。
root@zck:/var/log# lsof | grep messages
rsyslogd 544 syslog 7w REG 8,1 214641 134422 /var/log/messages
从上面命令输出可以看到,这个打开/var/log/messages文件的进程的PID是544,文件/var/log/messages的文件描述符(FD)号是7。
根据上述的PID和FD,可以在/proc找到对应的文件:
root@zck:/var/log#ls -al /proc/544/fd/7
l-wx------ 1 root root 64 2012-07-14 14:48 7 -> /var/log/messages
将文件/proc/544/fd/7拷贝到/var/log/messages
cp /proc/544/fd/7 /var/log/messages
然后重新启动syslog服务即可恢复被误删除的日志文件,并且新的日志记录能够继续被写入日志文件。
以root用户运行service命令。其中,service命令的第2个参数可能是syslog、也可能是rsyslog。
具体可以使用通过命令查询得知。
root@zck:/proc/544/fd# service --status-all
[ ? ] ...
[ ? ] rc.local
[ ? ] rsyslog
[ ? ] screen-cleanup
[ ? ] ...
#-------------------------------
root@zck:/proc/544/fd# service rsyslog restart
rsyslog start/running, process 2673
清空日志文件:
cat /dev/null>/var/log/messages
二 : linux rm(转)
拷贝文件及其子目录:cp -r 文件夹 新路径
通常情况下,删除文件用:rm 文件名
删除文件夹用:rmdir 文件夹名
但是 rmdir不能删除非空的文件夹,那如何删除非空文件夹呢:
命令:rm -rf 非空文件夹名(建议使用前做好备份,好像此命令是不会放到回收站的,删了就再也见不着下面的文件了)。(www.61k.com]
重命名文件夹:
mv oldfilename newfilename
mkdir 目录名 ——创建一个目录
rmdir 空目录名 ——删除一个空目录
rm 文件名 文件名 ——删除一个文件或多个文件
rm -rf 非空目录名 ——删除一个非空目录下的一切
touch 文件名 ——创建一个空文件
重命名文件(夹) / 移动文件(夹)到指定文件夹echWeb-技术社区5].O"?8H.I
执行格式: mv source destination
举例:
mv file1 file2 表示将文件 file1,更改文件名为 file2。 mv file1 dir1 将文件 file1,移到目录 dir1下,文件名仍为 file1。 mv dir1 dir2 若目录 dir2 存在,则将目录 dir1,及其所有文件和子目录,移到目录 dir2 下,新目录名称为 dir1。若目录 dir2 不存在,则将dir1,及其所有文件和子目录,更改为目录 dir2。
rename命令是专用于文件重命名的,而且根据其后的例子可以看出,rename除了给单个文件重命名,还可以批量文件重命名。同时,值得注意一点的是,rename命令是带3个参数而不是很多人认为的2个参数。
上面的例子中给出了两种文件批量重命名的用法,而实际上,rename结合通配符使用,它的功能比上面的例子所显示的更强大。基本的通配符有以下几个:
? 可替代单个字符
* 可替代多个字符
[charset] 可替代charset集中的任意单个字符
下面以例子加以说明:
如文件夹中有这些文件foo1, ..., foo9, foo10, ..., foo278,如果使用
rename foo foo0 foo?
则它只会把foo1到foo9的文件重命名为foo01到foo09,因为?通配符只能替代单个字符,所以被重命名的文件只是有4个字符长度名称的文件,文件名中的foo被替换为foo0。
再继续使用
rename foo foo0 foo??
则文件夹中的foo01到foo99的所有文件都被重命名为foo001到foo099,而foo100及其以后的文件名都不变,因为通配符?的使用,所以只重命名5个字符长度名称的文件,文件名中的foo被替换为foo0。
如果再继续使用
rename foo foo0 foo*
则foo001到foo278的所有文件都被重命名为foo0001到foo0278,因为通配符*可替代多个字符,所以,所有以foo开头的文件都被重命名了,文件名中的foo被替换为foo0。
我们再来看通配符[charset]的用法,还是继续在上面所说的文件夹中,执行如下命令
rename foo0 foo foo0[2]*
则从foo0200到foo0278的所有文件都被重命名为foo200到foo278,文件名中的foo0被替换为foo。
在使用中,三种通配符可以一起结合使用,关于具体的其它用法就只有自己不断的摸索了。
强制清空回收站
ubuntu8.04以前的版本
sudo rm -fr $HOME/.Trash/*
ubuntu 8.04 及以上
sudo rm -fr $HOME/.local/share/Trash/files/*
下面是touch命令用法
-a 只更改访问时间
-c, --no-create 不创建任何文件
-d, --date=字符串 使用<字符串>表示时间而非当前时间
-f (忽略)
-m 只更改修改时间
-r, --reference=文件 使用指定<文件>的时间属性而非当前时间
-t STAMP 使用 [[CC]YY]MMDDhhmm[.ss] 格式的时间而非当前时间
--time=WORD 使用 WORD 指定的时间:access、atime、use 都等于 -a
选项的效果,而 modify、mtime 等于 -m 选项的效果
--help 显示此帮助信息并离开
--version 显示版本信息并离开
请注意,-d 和 -t 选项可接受不同的时间/日期格式。
三 : Linux系统中恢复删除文件的方法
当Linux计算机受到入侵时,常见的情况是日志文件被删除,以掩盖攻击者的踪迹。管理错误也可能导致意外删除重要的文件,比如在清理旧日志时,意外地删除了数据库的活动事务日志。有时可以通过lsof来恢复这些文件。
当进程打开了某个文件时,只要该进程保持,打开该文件,即使将其删除,它依然存在于磁盘中。这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录索引节点。
在/proc 目录下,其中包含了反映内核和进程树的各种文件。/proc目录挂载的是在内存中所映射的一块区域,所以这些文件和目录并不存在于磁盘中,因此当我们对这些文件进行读取和写入时,实际上是在从内存中获取相关信息。大多数与lsof 相关的信息都存储于以进程的PID 命名的目录中,即/proc/1234 中包含的是PID 为1234 的进程的信息。每个进程目录中存在着各种文件,它们可以使得应用程序简单地了解进程的内存空间、文件描述符列表、指向磁盘上的文件的符号链接和其他系统信息。lsof 程序使用该信息和其他关于内核内部状态的信息来产生其输出。所以lsof 可以显示进程的文件描述符和相关的文件名等信息。也就是我们通过访问进程的文件描述符可以找到该文件的相关信息。
当系统中的某个文件被意外地删除了,只要这个时候系统中还有进程正在访问该文件,那么我们就可以通过lsof从/proc目录下恢复该文件的内容。 假如由于误操作将/var/log/messages文件删除掉了,那么这时要将/var/log/messages文件恢复的方法如下:
首先使用lsof来查看当前是否有进程打开/var/logmessages文件,如下:
[root@station90 yum.repos.d]# lsof | grep /var/log/messagessyslogd 2699 root 1w REG 8,2 480817 330592 /var/log/messages (deleted)
从上面的信息可以看到PID 2699(syslogd)打开文件的文件描述符为 1。同时还可以看到/var/log/messages已经标记被删除了。因此我们可以在/proc/2699/fd/1 (fd下的每个以数字命名的文件表示进程对应的文件描述符)中查看相应的信息,如下:
[root@station90 fd]# pwd/proc/2699/fd[root@station90 fd]# cat 1 | head -n 5Jan 13 08:59:02 station90 syslogd 1.4.1: restart.Jan 13 10:44:22 station90 syslogd 1.4.1: restart.Jan 13 10:44:22 station90 kernel: klogd 1.4.1, log source = /proc/kmsg started.Jan 13 10:44:22 station90 kernel: Linux version 2.6.18-164.el5 (mockbuild@x86-003.build.bos.redhat.com) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) #1 SMP Tue Aug 18 15:51:48 EDT 2009Jan 13 10:44:22 station90 kernel: Command line: ro root=LABEL=/ rhgb quiet
从上面的信息可以看出,查看/proc/2699/fd/1 就可以得到所要恢复的数据。如果可以通过文件描述符查看相应的数据,那么就可以使用 I/O 重定向将其复制到文件中,如:
cat /proc/2699/fd/1 > /var/log/messages
在恢复之前,及时touch了/var/log/messages文件也是没有问题的。
对于许多应用程序,尤其是日志文件和数据库,这种恢复删除文件的方法非常有用。
四 : RM文件的修复
一、RM文件的修复RMFix是一款专门用于修复损坏的RM文件的工具软件,它可对不能播放以及未下载完全的RM文件进行修复,还能对不能拖动播放的RM文件索引数据进行重建,使其能任意播放。[www.61k.com)1.播放时不能拖动RM文件的修复这主要是文件索引的数据出现了问题,可将需修复的RM文件与RMFix复制到同一文件夹中,然后在MS-DOS窗口下输入“RMFix filename.rm r”,回车执行,即可对该文件索引数据进行重建。当然也可将RM文件拖到RMFix程序的图标上,这时RMFix会以DOS模式运行并显示一个菜单,按“R”键开始修复。2.修复一个不完整的RM文件(尚未下载完全的RM文件)将RM文件拖拽到RMFix程序图标上,按“C”键开始数据块扫描,当RMFix扫描到一个损坏的数据块时,扫描会暂停,按“Y”键修复这个块,数据块扫描完成后RMFix程序结束,这时再次将RM文件拖拽到RMFix程序图标上,按“R”重建索引数据,有了索引数据的RM文件就能任意播放了。最后需要提醒读者的是,用RMFix修复时可能会对RM文件造成永久性损坏,所以在修复之前最好对原始文件进行备份。二、DivX文件的修复DivFix能帮助我们重建尚未下载完的DivX(AVI)文件的索引,同时提供标准错误检测,自动检查音频视频流中的错误信息。启动DivFix,进入程序的操作界面,执行“File”→“Open”命令,找到要修复的文件并打开。对于播放时不能拖动的文件,主要的问题还是文件的索引数据,这时只要点击界面左下方的“Rebuild Index”按钮重建索引就能修复好。对于完全不能播放的DivX文件,执行“Check Error”命令自动检查错误。三、ASF&WMV文件的修复从网上下载的ASF或WMV文件也同样会出现无法拖动滑块任意播放的问题,可使用AsfTools这款工具进行修复。AsfTools目前最新版本v3.1,适用Win9X/Me/2000/XP操作平台。运行AsfTools后,先用“Add”按钮添加要修复的ASF或WMA文件,然后展开左侧的“Repair”卷展栏,单击“Advanced Repair”按钮,弹出关联操作窗口。修复无法拖动播放的ASF或WMA文件,关键是两个状态标志值“Seekable Flag”和“Live Flag”,如果设置“Seekable Flag”选项为“Enable Seek”,同时设置“Live Flag”为“Reset Live”,那么就可实现任意拖动播放。在指定输出文件的名称和保存路径后,单击“Repair”按钮,这样即可修复无法拖动播放的ASF或WMA文件。四、MPEG文件的修复当我们使用Windows Media Player打开网上下载的MPEG文件时,程序提示“未找到可用于流呈现的筛选器组合”错误信息,或在播放时画面总是跳动,这可能是文件头数据损坏,如果不希望重新下载的话
rmfix RM文件的修复
,我们不妨试试能否修复。(www.61k.com]修复的思路是:使用其它正常的MPEG文件头来替换该文件头部分,从而达到修复的目的。当然要完成这项工作,还需要一款专门的编辑工具,如WinHex或UltraEdit-32均可。下面就以UltraEdit-32为例,讲解一下具体的操作过程, 启动UltraEdit-32后,执行“File”→“Open”,打开一个能正常播放的MPEG文件,用鼠标从偏移量00000000h处拖到偏移略大于损坏MPEG文件头异常部分的终止偏移量,按下“Ctrl+C”组合键将此段数据复制出来。然后再打开被损坏的MPEG文件,同样用鼠标从偏移量00000000h处开始,选取与刚才选取的偏移量相同的范围。通过右键菜单中的“Paste”命令用已复制出来的正常数据替换被损坏MPEG文件部分,存盘后退出。这时再重新播放该MPEG文件,也许就一切正常了。 快速拯救文件 各种视频文件修复攻略!!!发表时间:2006年9月9日 1时29分45秒 评论/阅读(0/0)一、RM文件的修复RMFix是一款专门用于修复损坏的RM文件的工具软件,它可对不能播放以及未下载完全的RM文件进行修复,还能对不能拖动播放的RM文件索引数据进行重建,使其能任意播放。1.播放时不能拖动RM文件的修复这主要是文件索引的数据出现了问题,可将需修复的RM文件与RMFix复制到同一文件夹中,然后在MS-DOS窗口下输入“RMFix filename.rm r”,回车执行,即可对该文件索引数据进行重建。当然也可将RM文件拖到RMFix程序的图标上,这时RMFix会以DOS模式运行并显示一个菜单,按“R”键开始修复。2.修复一个不完整的RM文件(尚未下载完全的RM文件)将RM文件拖拽到RMFix程序图标上,按“C”键开始数据块扫描,当RMFix扫描到一个损坏的数据块时,扫描会暂停,按“Y”键修复这个块,数据块扫描完成后RMFix程序结束,这时再次将RM文件拖拽到RMFix程序图标上,按“R”重建索引数据,有了索引数据的RM文件就能任意播放了。最后需要提醒读者的是,用RMFix修复时可能会对RM文件造成永久性损坏,所以在修复之前最好对原始文件进行备份。二、DivX文件的修复DivFix能帮助我们重建尚未下载完的DivX(AVI)文件的索引,同时提供标准错误检测,自动检查音频视频流中的错误信息。启动DivFix,进入程序的操作界面,执行“File”→“Open”命令,找到要修复的文件并打开。对于播放时不能拖动的文件,主要的问题还是文件的索引数据,这时只要点击界面左下方的“Rebuild Index”按钮重建索引就能修复好。对于完全不能播放的DivX文件,执行“Check Error”命令自动检查错误。三、ASF&WMV文件的修复从网上下载的ASF或WMV文件
rmfix RM文件的修复
也同样会出现无法拖动滑块任意播放的问题,可使用AsfTools这款工具进行修复。[www.61k.com)AsfTools目前最新版本v3.1,适用Win9X/Me/2000/XP操作平台。运行AsfTools后,先用“Add”按钮添加要修复的ASF或WMA文件,然后展开左侧的“Repair”卷展栏,单击“Advanced Repair”按钮,弹出关联操作窗口。修复无法拖动播放的ASF或WMA文件,关键是两个状态标志值“Seekable Flag”和“Live Flag”,如果设置“Seekable Flag”选项为“Enable Seek”,同时设置“Live Flag”为“Reset Live”,那么就可实现任意拖动播放。在指定输出文件的名称和保存路径后,单击“Repair”按钮,这样即可修复无法拖动播放的ASF或WMA文件。四、MPEG文件的修复当我们使用Windows Media Player打开网上下载的MPEG文件时,程序提示“未找到可用于流呈现的筛选器组合”错误信息,或在播放时画面总是跳动,这可能是文件头数据损坏,如果不希望重新下载的话,我们不妨试试能否修复。修复的思路是:使用其它正常的MPEG文件头来替换该文件头部分,从而达到修复的目的。当然要完成这项工作,还需要一款专门的编辑工具,如WinHex或UltraEdit-32均可。下面就以UltraEdit-32为例,讲解一下具体的操作过程, 启动UltraEdit-32后,执行“File”→“Open”,打开一个能正常播放的MPEG文件,用鼠标从偏移量00000000h处拖到偏移略大于损坏MPEG文件头异常部分的终止偏移量,按下“Ctrl+C”组合键将此段数据复制出来。然后再打开被损坏的MPEG文件,同样用鼠标从偏移量00000000h处开始,选取与刚才选取的偏移量相同的范围。通过右键菜单中的“Paste”命令用已复制出来的正常数据替换被损坏MPEG文件部分,存盘后退出。这时再重新播放该MPEG文件,也许就一切正常了。
扩展:rm文件修复 / rm文件修复器 / rm电影文件修复专家
扩展:rm文件修复 / rm文件修复器 / rm电影文件修复专家
五 : Linux系统中使用fdupes来查找并删除重复文件
对于大多数计算机用户而言,查找并替换重复的文件是一个常见的需求。查找并移除重复文件真是一项令人不胜其烦的工作,它耗时又耗力。但如果你的机器上跑着GNU/Linux,那么查找重复文件会变得十分简单,这多亏了fdupes工具。
fdupes是啥东东?
fdupes是Linux下的一个工具,它由Adrian Lopez用C编程语言编写并基于MIT许可证发行,该应用程序可以在指定的目录及子目录中查找重复的文件。fdupes通过对比文件的MD5签名,以及逐字节比较文件来识别重复内容,fdupes有各种选项,可以实现对文件的列出、删除、替换为文件副本的硬链接等操作。
文件对比以下列顺序开始:
大小对比 > 部分 MD5 签名对比 > 完整 MD5 签名对比 > 逐字节对比
安装 fdupes 到 Linux
在基于Debian的系统上,如Ubuntu和Linux Mint,安装最新版fdupes,用下面的命令手到擒来。
$ sudo apt-get install fdupes
# yum install fdupes
# dnf install fdupes
fdupes命令如何使用
1、 作为演示的目的,让我们来在某个目录(比如 tecmint)下创建一些重复文件,命令如下:
$ mkdir /home/"$USER"/Desktop/tecmint && cd /home/"$USER"/Desktop/tecmint && for i in {1..15}; do echo "I Love Tecmint. Tecmint is a very nice community of Linux Users." > tecmint${i}.txt ; done
$ ls -l
"I Love Tecmint. Tecmint is a very nice community of Linux Users."
2、 现在在tecmint文件夹内搜索重复的文件。
$ fdupes /home/$USER/Desktop/tecmint
/home/tecmint/Desktop/tecmint/tecmint13.txt
/home/tecmint/Desktop/tecmint/tecmint8.txt
/home/tecmint/Desktop/tecmint/tecmint11.txt
/home/tecmint/Desktop/tecmint/tecmint3.txt
/home/tecmint/Desktop/tecmint/tecmint4.txt
/home/tecmint/Desktop/tecmint/tecmint6.txt
/home/tecmint/Desktop/tecmint/tecmint7.txt
/home/tecmint/Desktop/tecmint/tecmint9.txt
/home/tecmint/Desktop/tecmint/tecmint10.txt
/home/tecmint/Desktop/tecmint/tecmint2.txt
/home/tecmint/Desktop/tecmint/tecmint5.txt
/home/tecmint/Desktop/tecmint/tecmint14.txt
/home/tecmint/Desktop/tecmint/tecmint1.txt
/home/tecmint/Desktop/tecmint/tecmint15.txt
/home/tecmint/Desktop/tecmint/tecmint12.txt
3、 使用-r选项在每个目录包括其子目录中递归搜索重复文件。
它会递归搜索所有文件和文件夹,花一点时间来扫描重复文件,时间的长短取决于文件和文件夹的数量。在此其间,终端中会显示全部过程,像下面这样。
$ fdupes -r /home
$ fdupes -S /home/$USER/Desktop/tecmint
$ fdupes -Sr /home/avi/Desktop/
$ fdupes /home/avi/Desktop/ /home/avi/Templates/
$ fdupes -d /home/$USER/Desktop/tecmint
Set 1 of 1, preserve files [1 - 15, all]:
Set 1 of 1, preserve files [1 - 15, all]: 2-15
$ fdupes -Sr /home > /home/fdupes.txt
9、 你可以使用-f选项来忽略每个匹配集中的首个文件。
首先列出该目录中的文件。
$ ls -l /home/$USER/Desktop/tecmint
$ fdupes -f /home/$USER/Desktop/tecmint
$ fdupes --version
$ fdupes -h
Usage: fdupes [options] DIRECTORY...
-r --recurse for every directory given follow subdirectories
encountered within
-R --recurse: for each directory given after this option follow
subdirectories encountered within (note the ':' at
the end of the option, manpage for more details)
-s --symlinks follow symlinks
-H --hardlinks normally, when two or more files point to the same
disk area they are treated as non-duplicates; this
option will change this behavior
-n --noempty exclude zero-length files from consideration
-A --nohidden exclude hidden files from consideration
-f --omitfirst omit the first file in each set of matches
-1 --sameline list each set of matches on a single line
-S --size show size of duplicate files
-m --summarize summarize dupe information
-q --quiet hide progress indicator
-d --delete prompt user for files to preserve and delete all
others; important: under particular circumstances,
data may be lost when using this option together
with -s or --symlinks, or when specifying a
particular directory more than once; refer to the
fdupes documentation for additional information
-N --noprompt together with --delete, preserve the first file in
each set of duplicates and delete the rest without
prompting the user
-v --version display fdupes version
-h --help display this help message
到此为止了。让我知道你以前怎么在Linux中查找并删除重复文件的吧?同时,也让我知道你关于这个工具的看法。在下面的评论部分中提供你有价值的反馈吧,别忘了为我们点赞并分享,帮助我们扩散哦。
61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1