我是先建了一个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
loveminds OP 另外查了下还有一条在家目录不小心手滑敲上的mv /usr/*
不知道有没影响,分区表还有备份(我备份的是整个sda的mbr) |
2
mringg 2015-07-22 06:42:41 +08:00 via Android
为妹子顶一个
|
3
loveminds OP 终于找到了,全跑/usr/uwsgi_temp里去了
|
4
mringg 2015-07-22 07:33:47 +08:00 via Android
话说你起的挺早
|
5
canky 2015-07-22 08:07:13 +08:00 via iPhone
妹子好评啊
|
6
DearTanker 2015-07-22 08:21:21 +08:00 1
曾经我给楼主的免费煮机捐赠过,那时穷,才捐了¥50好像,掩面~~~
|
7
YORYOR 2015-07-22 08:56:50 +08:00
妹子好评!
|
8
mcfog 2015-07-22 09:00:55 +08:00
这个故事告诉我们,跨分区的mv和rm是一路货色,嗯嗯
|
9
frozenshadow 2015-07-22 09:01:11 +08:00
PL妹子好评~
|
10
inmyfree 2015-07-22 09:02:45 +08:00
妹子女神起的好早啊....
|
12
FifiLyu 2015-07-22 09:12:18 +08:00
多年的经验告诉我,不要用mv,不要用mv。
硬盘读取不了数据的时候,复制数据库的时候,用mv只要有意外。就会死的难看。 最好是rsync。 |
13
Radeon 2015-07-22 09:14:25 +08:00
大批量文件操作用GUI文件管理器会更安全
|
16
nantmpeter 2015-07-22 10:15:33 +08:00
但mv的效率比cp高太多了。。。谨慎使用就好
|
17
tt88050643 2015-07-22 10:22:52 +08:00
楼主怎么操作的?RHEL会显示missing destination file operand after ......
|
18
frankzeng 2015-07-22 10:44:13 +08:00
做事留一手,日后好恢复,运维工程师的惨痛教训。
|
19
wudaown 2015-07-22 11:00:11 +08:00 via iPhone
围观妹子
|
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 来记录自己学到的新东西〜 |
21
lonelinsky 2015-07-22 11:14:02 +08:00
没看明白:
mv -f /usr/* /fakeusr/ 这句的时候是在什么目录下执行的?这个是有目标的,所以不是这句闯的货吧。 另外查了下还有一条在家目录不小心手滑敲上的mv /usr/* : 所以其实是这句闯的祸?执行的时候上面一句的mv -f /usr/* /fakeusr 已经执行过了? @loveminds |
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。 |
23
FifiLyu 2015-07-22 11:59:00 +08:00
|
24
9hills 2015-07-22 12:31:12 +08:00 via iPhone
不是mv的锅
|
25
aivier 2015-07-22 13:06:18 +08:00
以前用优盘复制文件有过类似的事,剪切途中断开了,源文件没了,优盘里的也不完整
|
26
msg7086 2015-07-22 13:15:17 +08:00
mv的时候一定一定要确保自己打了目标。否则通配符的最后一个对象就成目标了。
比如你两个文件,doc1 doc2,然后打个mv doc*,就是doc1覆盖doc2了。 |
27
dbfox 2015-07-22 13:42:54 +08:00
不得不来说下,头像上那女生好漂亮,是个温柔善良的女孩。
|
28
lonelinsky 2015-07-22 14:00:00 +08:00
@Draplater see,thx
|
30
timothyye 2015-07-22 14:46:35 +08:00
看来凡事还是cp靠谱,留条后路总没错……
|
32
loveminds OP @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 |
33
snnn 2015-07-22 14:58:49 +08:00
妹子好评
动手能力真强! |
37
foxni 2015-07-22 16:40:15 +08:00
妹纸好评,顺便吐槽下,很多时候明知道mv的不老实,但是还是深深的依恋着它~
|
38
ljcarsenal 2015-07-22 17:10:12 +08:00
LunaDream Technology 是个啥东西
|
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 目录按字母排序是不是最后一个目录。 |
40
Lilacs 2015-07-22 17:23:53 +08:00
冲妹子头像回一个
|
41
sunever 2015-07-22 17:57:14 +08:00
怎么一半都是看妹子的……
|
42
xseven007 2015-07-22 18:15:25 +08:00
mv之前我都谨慎的先快照一下,,,
|
44
jdlau 2015-07-22 19:30:47 +08:00
妹子,以后有问题可以直接来问我。
|
45
arslion 2015-07-22 19:42:37 +08:00
好久没有离会技术的妹子这么近了,才不到50楼ಥ_ಥ
|
46
ldb1992 2015-07-22 22:57:01 +08:00
看见头像就进来了额
|
47
nino789pzw 2015-07-22 23:40:50 +08:00
曾经cd错路径 然后手抖rm 了所有文件。。
|
48
ehs2013 2015-07-22 23:43:46 +08:00
一般带 * 的命令我都会手动展开一下(Tab)
|
50
Navee 2015-07-23 10:22:54 +08:00
围观妹子 , 学习技术!
|
51
codeyung 2015-07-23 10:43:08 +08:00
up 1
|
52
aprikyblue 2015-07-23 12:50:37 +08:00
学到了
|
53
jack139 2015-07-23 13:45:45 +08:00
看头像进来的
|
54
deathscythe 2015-07-23 15:22:57 +08:00
看看妹子进来了~
|
55
fxxkgw 2015-07-23 18:27:35 +08:00
进来看妹子。。
|
58
dalaomj 2015-08-03 19:14:19 +08:00
|
60
newborn 2015-09-08 17:13:32 +08:00
建议 rsync 命令移动整个目录树并保留权限、文件链接等。
|
61
bandianxing 2015-09-28 15:34:51 +08:00
事情应该是这样的:
mv /usr/* ,这条命令,把 usr 下面的其他目录 都弄到 /usr/uwsgi_temp 去了 后面的 mv -f /usr/* /fakeusr/ ,只不过是移动了 /usr/uwsgi_temp 。 所以,问题是出在第一步。 |