【目录迁移】nginx的静态图片目录满了,需要迁移,但要保持相对目录不变

把1个月以外的业务图片移动到其它挂载磁盘,
target_path = target_base_dir + file_path[len(source_base_dir)-1:] 这个拼接很重要,而不能使用replace,因为只是头部变化了。

import os  
import shutil
import time
import glob
# 设置源文件夹路径和目标文件夹路径  
source_base_dir = "/data/detector/output/"
target_base_dir = "/databak/output/"
# source_base_dir = "B/"
# target_base_dir = "A/"

for file_path in glob.glob(source_base_dir + "**/*.jpg", recursive=True):
    
    try:
	    file_date = os.path.getmtime(file_path)
	    if file_date < int(time.time() - 30 * 24 * 60 * 60): 
	        target_path =  target_base_dir + file_path[len(source_base_dir)-1:]
	        # shutil.move(file_name, target_path)
	        print("source:"+file_path)
	        dst_parent_dir = os.path.dirname(target_path)
	        if not os.path.exists(dst_parent_dir):  
	            os.mkdir(dst_parent_dir)
	        print("dest:"+target_path)
	        shutil.move(file_path, target_path)
	except:    
    	 traceback.print_exc()

待完成,若图片已经被删除或不存在,则继续执行。因此需要一个try catch 包裹住 否则, 1.1T的目录,仅仅生成 glob.glob的迭代器就假以时日了。

你可能感兴趣的:(linux,java,开发语言)