V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
loveminds
V2EX  ›  Linux

作死了, usr 给拷丢了!!!有办法恢复么

  •  1
     
  •   loveminds ·
    minmemory · 2015-07-22 06:08:09 +08:00 · 7291 次点击
    这是一个创建于 3448 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我是先建了一个fakeusr做中转
    mount /dev/sda2 /fakeusr
    然后直接mv -f /usr/* /fakeusr/
    结果等我umount之后再重新
    mount /dev/sda2 /usr
    瞬间惊呆
    ls -al /usr
    total 28
    drwxr-xr-x 4 root root 4096 Jul 22 05:47 .
    dr-xr-xr-x. 23 root root 4096 Jul 22 06:03 ..
    drwx------ 2 root root 16384 Jul 22 05:40 lost+found
    drwx------. 17 nginx root 4096 Jul 22 05:47 uwsgi_temp

    尼玛usr/local /usr/share等一堆东西被移到异次元去了???
    现在是否还有办法恢复!!!

    第 1 条附言  ·  2015-07-22 09:06:47 +08:00
    已经恢复,mv这货,没有目标的时候,它会自己臆想一个目标,然后就...跑到当前目录最后一个文件夹去了
    61 条回复    2015-09-28 15:34:51 +08:00
    loveminds
        1
    loveminds  
    OP
       2015-07-22 06:13:53 +08:00
    另外查了下还有一条在家目录不小心手滑敲上的mv /usr/*
    不知道有没影响,分区表还有备份(我备份的是整个sda的mbr)
    mringg
        2
    mringg  
       2015-07-22 06:42:41 +08:00 via Android
    为妹子顶一个
    loveminds
        3
    loveminds  
    OP
       2015-07-22 07:15:35 +08:00
    终于找到了,全跑/usr/uwsgi_temp里去了
    mringg
        4
    mringg  
       2015-07-22 07:33:47 +08:00 via Android
    话说你起的挺早
    canky
        5
    canky  
       2015-07-22 08:07:13 +08:00 via iPhone
    妹子好评啊
    DearTanker
        6
    DearTanker  
       2015-07-22 08:21:21 +08:00   ❤️ 1
    曾经我给楼主的免费煮机捐赠过,那时穷,才捐了¥50好像,掩面~~~
    YORYOR
        7
    YORYOR  
       2015-07-22 08:56:50 +08:00
    妹子好评!
    mcfog
        8
    mcfog  
       2015-07-22 09:00:55 +08:00
    这个故事告诉我们,跨分区的mv和rm是一路货色,嗯嗯
    frozenshadow
        9
    frozenshadow  
       2015-07-22 09:01:11 +08:00
    PL妹子好评~
    inmyfree
        10
    inmyfree  
       2015-07-22 09:02:45 +08:00
    妹子女神起的好早啊....
    loveminds
        11
    loveminds  
    OP
       2015-07-22 09:03:16 +08:00
    @mcfog 其实也不是,只是如果mv没有目标,它就会耍流氓
    FifiLyu
        12
    FifiLyu  
       2015-07-22 09:12:18 +08:00
    多年的经验告诉我,不要用mv,不要用mv。

    硬盘读取不了数据的时候,复制数据库的时候,用mv只要有意外。就会死的难看。

    最好是rsync。
    Radeon
        13
    Radeon  
       2015-07-22 09:14:25 +08:00
    大批量文件操作用GUI文件管理器会更安全
    xiaobu
        14
    xiaobu  
       2015-07-22 09:44:20 +08:00
    @FifiLyu mv毕竟速度快,rsync和cp不是什么时候磁盘空间都够这么搞
    ekeyme
        15
    ekeyme  
       2015-07-22 10:00:02 +08:00 via iPhone
    @FifiLyu cp后 rm如何?
    nantmpeter
        16
    nantmpeter  
       2015-07-22 10:15:33 +08:00
    但mv的效率比cp高太多了。。。谨慎使用就好
    tt88050643
        17
    tt88050643  
       2015-07-22 10:22:52 +08:00
    楼主怎么操作的?RHEL会显示missing destination file operand after ......
    frankzeng
        18
    frankzeng  
       2015-07-22 10:44:13 +08:00
    做事留一手,日后好恢复,运维工程师的惨痛教训。
    wudaown
        19
    wudaown  
       2015-07-22 11:00:11 +08:00 via iPhone
    围观妹子
    zhicheng
        20
    zhicheng  
       2015-07-22 11:11:10 +08:00
    跟大家讲一下 Unix 系统,在可能会改变系统的情况下,不要在参数里使用 * 。
    mv -f /usr/* /fakeusr/
    这个命令里的 * 并不是 mv 来处理的,是由 shell 把这个参数改成
    mv -f /usr/bin /usr/lib /usr/share /fakeuser
    这个才是最终执行的命令,所以在出错的时候,可能会很陌名其妙。cp 命令一样。
    其实正确的姿势不加 * 也一样能实现效果。。。

    Unix 的这个缺陷一定要记住。

    底下是广告

    欢迎大家使用 TextArea.com 来记录自己学到的新东西〜
    lonelinsky
        21
    lonelinsky  
       2015-07-22 11:14:02 +08:00
    没看明白:

    mv -f /usr/* /fakeusr/ 这句的时候是在什么目录下执行的?这个是有目标的,所以不是这句闯的货吧。

    另外查了下还有一条在家目录不小心手滑敲上的mv /usr/* : 所以其实是这句闯的祸?执行的时候上面一句的mv -f /usr/* /fakeusr 已经执行过了?

    @loveminds
    Draplater
        22
    Draplater  
       2015-07-22 11:47:19 +08:00   ❤️ 4
    @lonelinsky 你敲一个mv /usr/*,shell会自动展开为:
    mv /usr/bin /usr/etc /usr/games /usr/include /usr/lib /usr/lib32 /usr/lib64 /usr/libexec /usr/local /usr/portage /usr/sbin /usr/share
    所以东西都被移到了最后一个文件夹,即/usr/share。
    FifiLyu
        23
    FifiLyu  
       2015-07-22 11:59:00 +08:00
    @xiaobu mv因为出现意外的时候,数据没移动完,数据损坏只有傻眼了。
    @ekeyme cp 也是可以,这样至少出现问题时,数据源还是完好的。
    9hills
        24
    9hills  
       2015-07-22 12:31:12 +08:00 via iPhone
    不是mv的锅
    aivier
        25
    aivier  
       2015-07-22 13:06:18 +08:00
    以前用优盘复制文件有过类似的事,剪切途中断开了,源文件没了,优盘里的也不完整
    msg7086
        26
    msg7086  
       2015-07-22 13:15:17 +08:00
    mv的时候一定一定要确保自己打了目标。否则通配符的最后一个对象就成目标了。

    比如你两个文件,doc1 doc2,然后打个mv doc*,就是doc1覆盖doc2了。
    dbfox
        27
    dbfox  
       2015-07-22 13:42:54 +08:00
    不得不来说下,头像上那女生好漂亮,是个温柔善良的女孩。
    lonelinsky
        28
    lonelinsky  
       2015-07-22 14:00:00 +08:00
    @Draplater see,thx
    dalaomj
        29
    dalaomj  
       2015-07-22 14:02:08 +08:00
    @dbfox 就是她。V2有人挖出过更多照片。
    timothyye
        30
    timothyye  
       2015-07-22 14:46:35 +08:00
    看来凡事还是cp靠谱,留条后路总没错……
    loveminds
        31
    loveminds  
    OP
       2015-07-22 14:51:37 +08:00
    @dbfox 那是我
    loveminds
        32
    loveminds  
    OP
       2015-07-22 14:57:41 +08:00
    @xiaobu
    @ekeyme
    @timothyye
    这提供商只划了10G的sda而且还把其中4G用作swap
    导致的后果就是根文件系统长期满掉,以至于最后连tmp和pid的空间都没有了
    这是重新处理后的结果,swap放在home了
    df -lhT
    Filesystem Type Size Used Avail Use% Mounted on
    /dev/sda1 ext4 5.8G 2.9G 2.7G 53% /
    tmpfs tmpfs 946M 0 946M 0% /dev/shm
    /dev/sdb1 ext4 49G 7.1G 38G 15% /home
    /dev/sda2 ext4 3.9G 1.2G 2.5G 32% /usr/local
    snnn
        33
    snnn  
       2015-07-22 14:58:49 +08:00
    妹子好评

    动手能力真强!
    dbfox
        34
    dbfox  
       2015-07-22 14:59:34 +08:00
    @loveminds 然并卵,不过你可以给个微信微博或者可以公开的项目,来没事用来养眼
    dbfox
        35
    dbfox  
       2015-07-22 15:01:37 +08:00
    @loveminds 也可以聊聊天
    kobe1941
        36
    kobe1941  
       2015-07-22 15:06:08 +08:00
    @dalaomj 所以更多的照片在哪里?
    foxni
        37
    foxni  
       2015-07-22 16:40:15 +08:00
    妹纸好评,顺便吐槽下,很多时候明知道mv的不老实,但是还是深深的依恋着它~
    ljcarsenal
        38
    ljcarsenal  
       2015-07-22 17:10:12 +08:00
    LunaDream Technology 是个啥东西
    zent00
        39
    zent00  
       2015-07-22 17:23:00 +08:00 via iPhone
    看楼主的附言,感觉楼主还是没有完全了解问题的原因。问题的症结在于你输入的那个 * ,而不是 mv 命令,因为 Shell 把 * 拆开来解释了。举个例子:当前目录下有个 test 目录,而 test 下有三个子目录,分别为 a,b,c ,你试着执行 cp -R test/* ,然后去 test/c 下看看是不是多了些什么。

    这个例子里你输入的 cp -R test/* 实际上等同于 cp -R test/a test/b test/c ,你没有指定目标目录,于是通配符 * 被拆开之后的 test/c 成了目标目录。为什么不是 test/a 也不是 test/b ,而是 test/c 成为目标目录?相信你肯定也知道,因为拆开之后的内容按字母顺序来排列了。你可以看看你操作的那台服务器上 /usr 目录下 uwsgi_temp 目录按字母排序是不是最后一个目录。
    Lilacs
        40
    Lilacs  
       2015-07-22 17:23:53 +08:00
    冲妹子头像回一个
    sunever
        41
    sunever  
       2015-07-22 17:57:14 +08:00
    怎么一半都是看妹子的……
    xseven007
        42
    xseven007  
       2015-07-22 18:15:25 +08:00
    mv之前我都谨慎的先快照一下,,,
    wingyiu
        43
    wingyiu  
       2015-07-22 18:28:35 +08:00
    @Draplater 涨见识了
    jdlau
        44
    jdlau  
       2015-07-22 19:30:47 +08:00
    妹子,以后有问题可以直接来问我。
    arslion
        45
    arslion  
       2015-07-22 19:42:37 +08:00
    好久没有离会技术的妹子这么近了,才不到50楼ಥ_ಥ
    ldb1992
        46
    ldb1992  
       2015-07-22 22:57:01 +08:00
    看见头像就进来了额
    nino789pzw
        47
    nino789pzw  
       2015-07-22 23:40:50 +08:00
    曾经cd错路径 然后手抖rm 了所有文件。。
    ehs2013
        48
    ehs2013  
       2015-07-22 23:43:46 +08:00
    一般带 * 的命令我都会手动展开一下(Tab)
    Yiph
        49
    Yiph  
       2015-07-23 09:08:02 +08:00
    @Draplater @zent00 好评。
    Navee
        50
    Navee  
       2015-07-23 10:22:54 +08:00
    围观妹子 , 学习技术!
    codeyung
        51
    codeyung  
       2015-07-23 10:43:08 +08:00
    up 1
    aprikyblue
        52
    aprikyblue  
       2015-07-23 12:50:37 +08:00
    学到了
    jack139
        53
    jack139  
       2015-07-23 13:45:45 +08:00
    看头像进来的
    deathscythe
        54
    deathscythe  
       2015-07-23 15:22:57 +08:00
    看看妹子进来了~
    fxxkgw
        55
    fxxkgw  
       2015-07-23 18:27:35 +08:00
    进来看妹子。。
    loveminds
        56
    loveminds  
    OP
       2015-07-23 20:24:17 +08:00
    @xseven007 磁盘已经爆了哪有空间给你快照,如果要整个备份到sdb,要多少时间
    xseven007
        57
    xseven007  
       2015-07-24 21:09:18 +08:00 via Android
    @loveminds ssd做磁盘阵列,应该会很快
    dalaomj
        58
    dalaomj  
       2015-08-03 19:14:19 +08:00
    @kobe1941 @dbfox
    https://www.v2ex.com/member/gccvb
    这里能看到。居然和丹麦首相并列。。 -_-!
    dbfox
        59
    dbfox  
       2015-08-04 09:26:24 +08:00
    @dalaomj
    不明觉厉,怎么和丹麦扯上了,这么漂亮的妹子,赶快建个网站,发些日常,吸引些屌丝赚点广告费
    newborn
        60
    newborn  
       2015-09-08 17:13:32 +08:00
    建议 rsync 命令移动整个目录树并保留权限、文件链接等。
    bandianxing
        61
    bandianxing  
       2015-09-28 15:34:51 +08:00
    事情应该是这样的:
    mv /usr/* ,这条命令,把 usr 下面的其他目录 都弄到 /usr/uwsgi_temp 去了
    后面的 mv -f /usr/* /fakeusr/ ,只不过是移动了 /usr/uwsgi_temp 。
    所以,问题是出在第一步。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1034 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 18:41 · PVG 02:41 · LAX 10:41 · JFK 13:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.