1
NessajCN 44 天前
你给的信息不足,只是你自己观察了目录有没有少,别人是观察不到的
猜一下的话时间足够长是肯定有影响的 |
![]() |
2
newaccount 44 天前 ![]() 1. 赶紧找备份
2. 给电脑喂毒加密,推说是中毒了,痛骂病毒作者 3. 买机票 选吧 |
3
xiayun 44 天前
肯定有影响 你都有 mv 成功的文件夹了······而且还掩耳盗铃似得把文件目录删了 你为啥不 mv 回去呢?
|
4
clasd2011 OP 我的理解是:
1. mv 目录似乎是需要把根目录下的所有文件和文件夹都复制到目标目录完成了,才会去删除根目录? 2. 假如 mv 目录是一边 mv 一边删除的,但是 mv / ./_sub 是深度优先复制的,我看到/mnt 在复制,证明根目录下的其他文件夹,要么是已经 mv 成功了,要么是还没有 mv 。但是根目录下其他文件夹都还在,证明这些文件夹还没有被 mv ,只影响/mnt 目录 |
![]() |
5
totoro52 44 天前
买张机票吧
|
![]() |
8
Cooky 44 天前
你的程序跑不了了,该你跑了
|
9
clasd2011 OP |
![]() |
10
newaccount 44 天前
你把根目录移动到根目录下的子目录,能发生啥谁也不知道
现在能选择的就是找个一样版本的系统,根目录对比一下,少了哪些文件夹就把里面的“文件”“复制”过去 然后这台机器千万千万别重启 至于 /mnt 里面什么情况,找备份听天由命吧 每过一阵子就有人误操作,你不是唯一一个,也不会是幸运的那个,这东西做错了就认栽,别抱有不切实际的幻想 以后记得先 cp 再 rm 就行了,这次该吃吃该喝喝想开点 |
11
Seanfuck 44 天前
就算是先复制再删除,也是一个一个文件来,不是整体复制完再整体删除吧?
|
12
SKYNE 44 天前 ![]() 脚本开头记得:set -eu
遇到错误或未定义的变量会终止 |
13
esee 44 天前
mv 跨盘了肯定是先复制再删除,但是这样也是一个文件一个文件复制再删除,而不是整体复制再整体删除。这种事没办法了。抓紧时间备份重要的数据文件吧,不然可能系统重启后就启动不起来了。,如果系统有快照试试能不能救一下。如果系统还能用凑活用就用吧,以后出问题甩锅给别人就是了。
这种要养成好的操作习惯,不要直接 rm -f ,删除目录老老实实用 rmdir 或者 mv *** /tmp ,有些繁琐操作看着没有意义,都是在血泪中经历过来的。 |
![]() |
14
guanzhangzhang 44 天前
不要纠结原理了,先看看怎么在重启之前,把重要数据导出来备份啥的
|
15
jifengg 44 天前
你 list 一下系统根目录/,一般第一个目录是 /bin ,然后是 /boot 。当然不排除你创建了其他更靠前的目录。
你运行了 2 分钟左右,也许 mv 还没将首个目录移动完,那你就进第一个目录,看看这个目录下有没有缺少啥,另外如果你不是 root 运行 mv ,可能有些文件也没法 mv (万幸)。 |
![]() |
16
alen_v 44 天前
备份是唯一正解。
|
![]() |
17
msg7086 44 天前 ![]() @NessajCN #6 跨文件系统是每个源项目全部复制完再删除。
@Seanfuck @esee 源码可以自己看: https://github.com/coreutils/coreutils/blob/master/src/mv.c#L169 先尝试执行改名,改名不成功就把整个源复制到目标,全部复制完成后删除原始文件。 比如 mv a b c 先复制 a 到 c/a ,然后删除 a ,然后复制 b 到 c/b ,然后删除 b 。 楼主是复制/,所以要等整个/全部复制完以后才会删除原来的文件。 |
18
991547436 44 天前
r-studio 扫下 data 看看删了什么文件名 不过 ubuntu 和 centos mv /会提示/繁忙 其他系统不知道
|
![]() |
19
skymei 44 天前
我操作过,有影响,虚拟机直接就起不来了,最后新建虚拟机,重新挂在磁盘才恢复
|
20
Huelse 44 天前
别研究了也别重启,先备份关键数据!
|
![]() |
21
wentjiang 44 天前
我在测试环境误操作过, , 目前还在运行的软件还可以继续用, 但是如果停了再启动,就直接启动不了报错了,
老实交代吧 |
22
zengguibo 44 天前
其实你中断了命令后再 mv 回去有可能修复,你 rm 后就完蛋了,赶紧备份重要的数据,找台机器替换
|
![]() |
23
skiy 44 天前 via iPhone
cp -r 回去。或者 rsync 过去。
|
![]() |
24
crab 44 天前
你为什么选择直接删除。。
|
25
fyq 44 天前 ![]() 想起一个有些年头的笑话,说为什么要装 Adobe 家的全家桶:因为输错命令删文件的时候先从 A 开始会比较久,让你有时间反应。
|
![]() |
26
byte10 43 天前
先清理痕迹,history -c ,问下 ai 咋整😂
|
![]() |
27
msg7086 43 天前 ![]() 省流:这种情况 kill 掉 mv 的话什么文件都不会丢,楼下可以不用浪费时间出馊主意了。
|
28
fox0001 43 天前 via Android
@msg7086 #27 你意思,是不是 mv 先 copy 再 delete ? copy 未完成,就不会 delete ,所以根文件系统没丢失文件?
|
30
fox0001 43 天前 via Android
@msg7086 #29 但是如果是 mv 到相同文件系统,比如同一个分区内执行 mv ,就等于修改相关文件的 meta 数据而已。这样的话,mv 的行为就不是 copy 再 delete 了。
|
![]() |
31
awker 43 天前 ![]() 会先拷贝,在 rm 。脚本中加个 set -x 就可以看到运行过程了。
#!/bin/bash set -x cd /data/tmp mv / ./_sub |
![]() |
33
dhb233 43 天前
用的是 mv ,不是 rm ,数据不会丢。
可能会移动一些系统文件,mv cp 命令也没了,就不能手工恢复了,可能重启也会启动失败。不过都可以重装系统解决 |
![]() |
35
la2la 43 天前
趁还没有出问题,快点备份重要数据。
|
![]() |
36
zoharSoul 43 天前
没问题的, 具体看#17
有些人啥都不懂在哪得吧的的 |
![]() |
38
mazz 43 天前
|
39
chenykun123 43 天前
@jifengg 那他都看到 mv 成功的/mnt 目录了, 这个已经比较靠后的位置了
|
![]() |
40
zh584728 43 天前
|
43
WorseIsBetter 43 天前 ![]() @jifengg #15
然而 POSIX 没有规定 readdir 返回目录项的顺序,包括 ext4 、btrfs 在内的绝大多数现代 on-disk 文件系统对此也没有任何保证。 ls 有默认按文件名排序的行为,所以看上去是有序的。如果带上 -f 参数,会发现目录项的顺序可能没有规律(具体参考文件系统实现。比如 ext4 用的 htree 就是根据文件名 hash 排序; btrfs 则是基于 counter ,所以看到的顺序基本上是目录项的插入顺序)。 现在回到 mv/rm 上。在批量删除的时候,没有必要对目录项排序后再操作。具体到实现上,比如 coreutils 的 remove.c 里面的实现,调用 fts_open() 时传的第三个参数是空指针,也就是不排序。你可以带 -v 参数,或者 strace 来实际验证是不是这样。 ---- 当然这些其实并不是很重要。楼上 @msg7086 大佬的回答已经说明了没有文件会被删除,因为命令指定的根目录是 / 而不是 /*,复制没有完成,所以任何文件都不会被删除(如果是后者,就要看 shell 是如何展开的了)。除非 OP 用的不是 coreutils ,而是其他的 mv 实现,那样的话就需要另外分析了…… |
![]() |
44
Zoyo94 43 天前
基本报废重装吧 或者使用 ISO 镜像修复(我没试过)
|
![]() |
45
msg7086 43 天前
@WorseIsBetter
对,关键就在于他写的是 / 而不是 /* 所以要等所有的 / 复制完才会删除。如果是 /* 由 Shell 展开成很多项,就会复制一项删除一项。 为了避免误解造成歧义,我 #17 特意举了个 mv a b c 的例子。 |
![]() |
46
gy0624ww 43 天前
哎,昨天我们就是,有个同学在测试服务器 执行了 rm -f * .tar
直接给测试环境干没了 |
47
lzy250 43 天前
跑吧ε=ε=ε=(~ ̄▽ ̄)~
|
![]() |
48
lujiaxing 43 天前
跑吧ε=ε=ε=(~ ̄▽ ̄)~
|
![]() |
49
lujiaxing 43 天前
送楼主一首歌
Run boy run! This world is not made for you Run boy run! They’re trying to catch you Run boy run! Running is a victory Run boy run! Beauty lays behind the hills Run boy run! The sun will be guiding you Run boy run! They’re dying to stop you Run boy run! This race is a prophecy Run boy run! Break out from society Tomorrow is another day And you won’t have to hide away You’ll be a man, boy! |
![]() |
50
ryd994 43 天前 via Android
先备份数据。剩下的你随便怎么搞。大不了重装系统。只要数据还在就一切都有救。
|
52
listenerri 42 天前 via Android
op 回来说一下最后结果?
|
53
workingpad2 42 天前
luck = 1/(seconds^2)
|
![]() |
54
sunzhenyucn 42 天前
run
|
![]() |
55
xomix 42 天前
不知道 Linux 下如何处理,微软系的处理方式一直是没有完成复制之前是不会修改原始位置的文件的(也就是移动文件没完成复制动作不会删除)。
Linux 下我没见过类似的文件,你需要自己去找资料了。 |
56
clasd2011 OP 目前什么都没有发生,也许未来机器重启了,就知道最终结果了。
|