软用者 发表于 2008-8-24 16:28:23

u盘文件出错的问题

最近,我在magic中可能因为没有安全删除U盘导致现在一个U盘的文件在读取时要很长时间。我就在windows中用磁盘扫描程序修复了一下,结果一个600多兆的文件变成了70多兆,估计少了的部分走到了另外一个原本是一个文件夹的文件去,这个原本的空的文件夹成了文件,有500多兆,和哪个变成70多兆的文件加起来,估计与原来600多兆的文件大小相等。请问现在怎样解决呢?一开始的时候,又怎样做才好呢?

haulm 发表于 2008-8-24 23:21:28

没遇到过,不过可以尝试用linux命令连接起来,至于能不能用就不知道了。

stdio 发表于 2008-8-25 12:55:44

photorec 扫描一下

然后parted 处理

软用者 发表于 2008-8-25 22:20:38

谢谢回答,我还有一些内容要补充。这个原本600多兆的文件是iso文件,当初出问题时,在linux中列出这个U盘中的内容(大约800兆)要约半分钟,在windows中却很块。我在windows中用磁盘扫描工具修复后,在linux中打开U盘是正常了,但成了现在似乎一个文件分成两部分的情况,这个iso文件也能正常打开,我用原文件和现在的文件对比,大致看了一下,打开后的iso文件里的文件和原文件一样。但现在怎样处理呢?haulm说的用linux命令连接怎样用呢?stdio说得我也不理解。photorec是什么?parted是分区程序吧?又怎么样?

[ 本帖最后由 软用者 于 2008-8-26 16:03 编辑 ]

stdio 发表于 2008-8-26 12:23:32

photorec http://www.cgsecurity.org/wiki/PhotoRec

扫描并恢复数据

parted 把USB disk 处理掉,就是重新分区,格式化

iso 分成两部分还能用?

哈哈~:mrgreen:

checksum 了吗?八成是不对的,里面的文件有些也不能用吧?

以前linux 下的usb 设备的确是个问题。

haulm 发表于 2008-8-26 20:43:18

在 linux/unix 中可以使用 join 命令来连接两个文件。它会根据指定栏位,找到两个文件中指定栏位内容相同的行,将他们合并,并根据要求的格式输出内容。该命令对于比较两个文件的内容很有帮助。

语法 join [ -i ][ -a filenumber | -v filenumber ][-1 fieldnumber]
[-2 fieldnumber ][ -o list ][ -e string ][ -t char ]
   file1file2主要参数

-i 或 --igore-case   比较栏位内容时,忽略大小写的差异。
-a <1或2>   除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。
-v <1或2>   跟-a相同,但是只显示文件中没有相同栏位的行。
-1/-j1 <栏位>   连接[文件1]指定的栏位。栏位从 1 开始,默认为1。
-2/-j2 <栏位>   连接[文件2]指定的栏位。栏位从 1 开始,默认为1。
-j <栏位> 相当于 -1 <栏位> -2 <栏位>
-e <字符串>   若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串。
-o <格式>   按照指定的格式来显示结果。
-t <字符>   使用栏位的分隔字符。
--help   显示帮助。
--version   显示版本信息。实例

haulm 发表于 2008-8-26 20:46:23

#合并与分割(sort,uniq,join,cut,paste,split)

    (1)sot命令
      sort files 许多不同的域按不同的列顺序排序
          -c 测试文件是否已经排序
          -m 合并两个排序文件
          -u 删除所有同样行
          -o 存储sort结果的输出文件名
          -t 域分隔符,用非空格或tab开始排序
          +n :n 为列号,使用此列号开始排序
          -n 指定排序是域上的数字分类项
          -r 比较求逆
      sort -c test.txt 测试文件是否分类过
      sort -u test.txt 排序并合并一样的行
      sort -r test.txt 以相反的顺序排列
      sort -t "/" +2 test.txt 以"/"分隔,第二个域开始分类

      (2)uniq命令
          uniq files 从一个文本文件中去除或禁止重复行
          -u 只显示不重复行
          -d 只显示有重复数据行,每种重复行只显示其中一行
          -c 打印每一重复行出现次数
          -f :n为数字,前n个域被忽略
          uniq -f 2 test.txt 忽略前2个域

      (3)join 命令
          join file1 file2 用来将来自两个分类文本文件的行连在一起
          -an,n为一数字,用于连接时从文件n中显示不匹配行
          -onm ,连接域,n为文件号,m为域号
          -jnm,n为文件号,m为域号,使用其他域作连接域
          -t ,域分隔符。用来设置非空格或tab键的域分隔符。

      (4)split命令
          split -output_file_size intput_filename output_filename
          用来将大文件分割成小文件。
            -b n,每个分割文件的大小n
            -C n,每个分割文件一行最多n字节
            -l n,每个分割文件的行数
            -n,同-l n
            split -10 test.txt 将test.txt分割成10行的小文件

      (5)cut 命令
          cut -c n1-n2 filename 显示每行从开头算起 n1 到 n2 的文字。
          cut -c 3-5 test.txt 显示test.txt中每行从第3到第5个字符

[ 本帖最后由 haulm 于 2008-8-26 20:47 编辑 ]

软用者 发表于 2008-8-29 22:56:05

请问在刚开始的时候,在linux中要用很长时间读盘时,这时在windows中似乎是正常的,要怎样做才正确呢?

jiangtao9999 发表于 2008-8-29 23:07:28

有交叉文件链?
这个在 NTFS 和 EXT 里面是正常的。FAT32 是不允许的。

这种错误是可以读取文件的。

stdio 发表于 2008-8-30 14:53:42

你的系统读其他的USB 存储器的时候也是这个样子吗?

软用者 发表于 2008-8-30 21:07:18

回复 #10 stdio 的帖子

不是,只是其中一个U盘出了错。

软用者 发表于 2008-9-4 23:04:04

有谁知道开始读盘有错时怎样正确处理?
页: [1]
查看完整版本: u盘文件出错的问题