- 線上應用為了節(jié)省成本谨垃,采用fastdfs自建文件服務器启搂,系統(tǒng)上線7年之久硼控,1T的磁盤空間使用達95%,更讓人郁悶的是胳赌,磁盤竟然不能動態(tài)擴容牢撼,只能再次掛接大磁盤,更改文件存儲路徑到新磁盤目錄疑苫,這樣文件轉移就成關鍵操作熏版。
- 大量的文件轉移肯定耗時,時間難以估算捍掺,只能從業(yè)務出發(fā)撼短,羅列出關鍵業(yè)務附件類型,根據(jù)文件后綴逐步遷移挺勿,重要的先處理曲横,減少對應用的影響,文件目錄多層嵌套不瓶,因此開發(fā)一個文件遷移小工具勢在必行禾嫉,這正是Python發(fā)揮優(yōu)勢的時候。
話不多少蚊丐,直接上代碼:
#!/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("有重復文件!麦备!孽椰,跳過,不移動D嗬肌E拧!")
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' # 這個是你數(shù)據(jù)源 文件夾
moved_path = r'/fastdfs/storage0/data' # 這個是你想要移動到哪里的的文件夾
move_file(orgin_path,moved_path)
最后編輯于 :
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者