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

2015-07-22 06:08:09 +08:00
 loveminds

我是先建了一个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等一堆东西被移到异次元去了???
现在是否还有办法恢复!!!

7059 次点击
所在节点    Linux
61 条回复
lonelinsky
2015-07-22 11:14:02 +08:00
没看明白:

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

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

@loveminds
Draplater
2015-07-22 11:47:19 +08:00
@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
2015-07-22 11:59:00 +08:00
@xiaobu mv因为出现意外的时候,数据没移动完,数据损坏只有傻眼了。
@ekeyme cp 也是可以,这样至少出现问题时,数据源还是完好的。
9hills
2015-07-22 12:31:12 +08:00
不是mv的锅
aivier
2015-07-22 13:06:18 +08:00
以前用优盘复制文件有过类似的事,剪切途中断开了,源文件没了,优盘里的也不完整
msg7086
2015-07-22 13:15:17 +08:00
mv的时候一定一定要确保自己打了目标。否则通配符的最后一个对象就成目标了。

比如你两个文件,doc1 doc2,然后打个mv doc*,就是doc1覆盖doc2了。
dbfox
2015-07-22 13:42:54 +08:00
不得不来说下,头像上那女生好漂亮,是个温柔善良的女孩。
lonelinsky
2015-07-22 14:00:00 +08:00
@Draplater see,thx
dalaomj
2015-07-22 14:02:08 +08:00
@dbfox 就是她。V2有人挖出过更多照片。
timothyye
2015-07-22 14:46:35 +08:00
看来凡事还是cp靠谱,留条后路总没错……
loveminds
2015-07-22 14:51:37 +08:00
@dbfox 那是我
loveminds
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
2015-07-22 14:58:49 +08:00
妹子好评

动手能力真强!
dbfox
2015-07-22 14:59:34 +08:00
@loveminds 然并卵,不过你可以给个微信微博或者可以公开的项目,来没事用来养眼
dbfox
2015-07-22 15:01:37 +08:00
@loveminds 也可以聊聊天
kobe1941
2015-07-22 15:06:08 +08:00
@dalaomj 所以更多的照片在哪里?
foxni
2015-07-22 16:40:15 +08:00
妹纸好评,顺便吐槽下,很多时候明知道mv的不老实,但是还是深深的依恋着它~
ljcarsenal
2015-07-22 17:10:12 +08:00
LunaDream Technology 是个啥东西
zent00
2015-07-22 17:23:00 +08:00
看楼主的附言,感觉楼主还是没有完全了解问题的原因。问题的症结在于你输入的那个 * ,而不是 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
2015-07-22 17:23:53 +08:00
冲妹子头像回一个

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/207392

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX