同步文件夹脚本
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()