事件背景:
根据需求,我需要删除指定路径下已存在的内容,执行的命令是 rm -rf target_path ,而这个target_path 是作为参数传入的,我使用了python中的os.path.join拼接路径的各个部分。为了路径最后以"/"结尾,我就用使用了os.path.join(a,b,c,"/"),期望返回的是a/b/c/
结果:
os.path.join(a,b,c,"/")返回的是/,导致我执行了rm -rf /
然后就悲剧了......
补救措施:
好在我没有使用root用户执行,当前还是测试环境,只删除了当前用户下有权限的内容,但是也有很多大家测试和实验用的代码和数据。
被误删数据的Linux服务器的文件系统是xfs,度娘告诉我可以使用TestDisk恢复误删数据,我就按照文档操作,最后真的恢复了大部分数据。
文档:testdisk — testdisk 7.1 documentation
切记!切记!! 切记!!! 在使用os.path.join时谨慎传入"/"