python 一段专门用来做新旧文件夹迁移的代码 (源文件夹的新文件覆盖目标文件夹的旧文件,若旧文件不存在,则直接拷贝)

如下(这段代码来自 CHATGPT)

import os
import shutil

def sync_files_with_structure(src_dir, dest_dir):
    """
    Sync files from source directory to destination directory, considering subdirectory structures.
    Newer files will overwrite older ones. Files not present in destination will be copied.
    
    Parameters:
    src_dir (str): The source directory.
    dest_dir (str): The destination directory.
    """
    # 对源目录进行遍历
    for root, dirs, files in os.walk(src_dir):
        # 计算出相对路径,以保持子目录结构
        rel_path = os.path.relpath(root, src_dir)
        dest_path = os.path.join(dest_dir, rel_path)
        
        # 确保目标路径中的相应子目录存在
        os.makedirs(dest_path, exist_ok=True)
        
        for name in files:
            src_file = os.path.join(root, name)
            dest_file = os.path.join(dest_path, name)
            
            # 如果目标文件存在,则比较文件的最后修改时间
            if os.path.exists(dest_file):
                src_mtime = os.path.getmtime(src_file)
                dest_mtime = os.path.getmtime(dest_file)
                
                # 如果源文件更新,则覆盖目标文件
                if src_mtime > dest_mtime:
                    shutil.copy2(src_file, dest_file)
                    print(f"覆盖文件:{src_file} -> {dest_file}")
            else:
                # 如果目标文件不存在,直接拷贝
                shutil.copy2(src_file, dest_file)
                print(f"拷贝文件:{src_file} -> {dest_file}")

# 设置源目录和目标目录的路径
src_directory = 'src-dir-location'
dest_directory = 'dst-dir-location'

# 执行文件同步操作
sync_files_with_structure(src_directory, dest_directory)

你可能感兴趣的:(python,服务器,linux)