python
复制代码

import os
import time
import subprocess
from datetime import datetime

# 日志文件路径
LOG_FILE = "/root/docker/sync/jl.log"

def log_message(message):
    """将日志信息写入日志文件"""
    timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    with open(LOG_FILE, "a") as log_file:
        log_file.write(f"[{timestamp}] {message}\n")

def execute_command(command):
    """执行 shell 命令并记录日志"""
    try:
        subprocess.run(command, shell=True, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        log_message(f"命令成功执行: {command}")
    except subprocess.CalledProcessError as e:
        log_message(f"命令执行失败: {command}\n错误信息: {e}")

def main():
    while True:
        # 记录任务开始时间
        log_message("同步任务开始")
        
        # 删除路径中的 '/fatshare/jellyfin'
        find_command = (
            "find /root/docker/sync/config -type f -name '*.strm' "
            "-exec sed -i 's/\\/fatshare\\/jellyfin//g' {} +"
        )
        execute_command(find_command)
        
        # 同步文件到指定目录
        sync_commands = [
            "rsync -av --delete /root/docker/sync/config/animation_linux/ /sync/dmzl/",
            "rsync -av --delete /root/docker/sync/config/film_linux/ /sync/zgdy/",
            "rsync -av --delete /root/docker/sync/config/tv_linux/ /sync/zgds/",
        ]
        
        for command in sync_commands:
            execute_command(command)
        
        # 记录任务完成时间
        log_message("同步任务完成")
        log_message("等待1小时后再次执行...")
        
        # 等待1小时
        time.sleep(3600)

if __name__ == "__main__":
    # 确保日志文件存在
    if not os.path.exists(LOG_FILE):
        with open(LOG_FILE, "w") as log_file:
            log_file.write("同步脚本日志文件初始化\n")
    main()

改良版

import os
import time
import subprocess
from datetime import datetime

# 日志文件路径
LOG_FILE = "/root/docker/sync/jl.log"

def log_message(message):
    """将日志信息写入日志文件"""
    timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    with open(LOG_FILE, "a") as log_file:
        log_file.write(f"[{timestamp}] {message}\n")

def execute_command(command):
    """执行 shell 命令并记录日志"""
    try:
        subprocess.run(command, shell=True, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        log_message(f"命令成功执行: {command}")
    except subprocess.CalledProcessError as e:
        log_message(f"命令执行失败: {command}\n错误信息: {e}")

def main():
    while True:
        # 记录任务开始时间
        log_message("同步任务开始")
        
        # 同步文件到指定目录
        sync_commands = [
            "rsync -av --delete /root/docker/sync/config/animation_linux/ /sync/dmzl/",
            "rsync -av --delete /root/docker/sync/config/film_linux/ /sync/zgdy/",
            "rsync -av --delete /root/docker/sync/config/tv_linux/ /sync/zgds/",
        ]
        for command in sync_commands:
            execute_command(command)
        
        # 删除路径中的 '/fatshare/jellyfin' (改为从 /sync 目录执行)
        find_command = (
            "find /sync -type f -name '*.strm' "
            "-exec sed -i 's/\\/fatshare\\/jellyfin//g' {} +"
        )
        execute_command(find_command)
        
        # 记录任务完成时间
        log_message("同步任务完成")
        log_message("等待1小时后再次执行...")
        
        # 等待1小时
        time.sleep(3600)

if __name__ == "__main__":
    # 确保日志文件存在
    if not os.path.exists(LOG_FILE):
        with open(LOG_FILE, "w") as log_file:
            log_file.write("同步脚本日志文件初始化\n")
    main()