暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

京都大学超算系统 77TB 重要数据被误删

yangyidba 2021-12-31
492


据京都大学主页的公报显示,本次数据丢失事件发生在 12 月 14 日 到 12 月 16 日之间,一共删除了/LARGE0 目录下的 3400 多万个文件,总容量大约 77 TB,其中有 49 TB 数据可以从备份恢复,28 TB 数据完全丢失。

具体事故的原因日本惠普也在 声明 PDF(阅读原文) 中做了详细说明。

惠普用于超算系统的备份脚本会使用 find 命令找出无用的 Log 文件并删除,最近日本惠普为了提高程序的“可读性”对传给 find 命令的变量名做了一些修改,然后更新了系统中的脚本,但是没考虑到 Bash 会在运行过程中实时读取脚本文件然后执行,于是尚在执行中的备份程序读取了新脚本中的 find 指令,最终导致误删文件。

惠普日本在“谢罪声明”中表示对此次事件负全责,并承诺赔偿和善后。

编者记: Bash 在解析 Shell 脚本时,是边解析边执行的,并不是将脚本一次性读入内存后执行。如果脚本在执行时,我们用新脚本覆盖了旧脚本,而且文件的 inode 没有发生变化(比如使用 cp new.sh old.sh
,old.sh 内容变了,但 inode 不会变),那么 Bash 就会解析更新后的内容并执行。

find 命令常见用法

find /data -mtime +|-天数 -name *.log -exec rm -rf {} ;

命令详解:

将/data目录下所有N天的log 文件删除。

find:Linux的查找命令,用户查找指定条件的文件
/data: 要删除这个目标目录里面文件
-mtime:标准语句写法
+|-N: N是数字,+N表示N天前的文件,-N 表示 N天内的文件。比如 +10 表示10天之前的文件。
-name *.log: 表示找到 以log结尾的文件
-exec:find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
rm -rf:强制删除文件,包括目录。
尾部的 {} \; 缺一不可。

例子

删除 /logs 目录更改时间在7日以前的文件:

find /logs/ -type f -mtime +7 -exec rm -f {} ;

删除/logs目录中更改时间在7日以内的文件:

find /logs/ -type f -mtime -7 -exec rm -f {} ; 

https://www.cnbeta.com/articles/tech/1220137.html


推荐阅读

删库跑路?


最后修改时间:2021-12-31 08:29:53
文章转载自yangyidba,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论