- 线上应用为了节省成本,采用fastdfs自建文件服务器,系统上线7年之久,1T的磁盘空间使用达95%,更让人郁闷的是,磁盘竟然不能动态扩容,只能再次挂接大磁盘,更改文件存储路径到新磁盘目录,这样文件转移就成关键操作。
- 大量的文件转移肯定耗时,时间难以估算,只能从业务出发,罗列出关键业务附件类型,根据文件后缀逐步迁移,重要的先处理,减少对应用的影响,文件目录多层嵌套,因此开发一个文件迁移小工具势在必行,这正是Python发挥优势的时候。
话不多少,直接上代码:
#!/usr/bin/env python
#-*- coding:UTF-8 -*-
import os,shutil
def move_file(orgin_path,moved_path):
#判断目录是否存在
if os.path.exists(moved_path)==False:
os.mkdir(moved_path)
dir_files=os.listdir(orgin_path) #得到该文件夹下所有的文件
for file in dir_files:
file_path=os.path.join(orgin_path,file) #路径拼接成绝对路径
if os.path.isfile(file_path): #如果是文件,就打印这个文件路径
if file.endswith(".xls") or file.endswith(".xlsx"):
if os.path.exists(os.path.join(moved_path,file)):
print("有重复文件!!,跳过,不移动!!!")
continue
else:
shutil.move(file_path, moved_path)
if os.path.isdir(file_path): #如果目录,就递归子目录
#新文件夹名称
new_moved_path=os.path.join(moved_path,file)
move_file(file_path,new_moved_path)
print("移动所有文件完成!"+orgin_path)
if __name__ == '__main__':
orgin_path = r'/home/server/fastdfs/data' # 这个是你数据源 文件夹
moved_path = r'/fastdfs/storage0/data' # 这个是你想要移动到哪里的的文件夹
move_file(orgin_path,moved_path)