Featured image of post Caddy 配置文件同步

Caddy 配置文件同步

Caddy 配置文件同步 一 、1panel 计划任务(caddy配置同步)ᦀ

Caddy 配置文件同步


一 、1panel 计划任务(caddy配置同步)(暂时弃用)

1 、在 Ubuntu 主机shell终端 创建脚本💡‘EOF’

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
mkdir -p /mnt/mydisk/my-sh/rsync && touch /mnt/mydisk/my-sh/rsync/caddy-rsync.sh && chmod +x /mnt/mydisk/my-sh/rsync/caddy-rsync.sh && cat > /mnt/mydisk/my-sh/rsync/caddy-rsync.sh <<'EOF'
#!/bin/bash

# 获取开始时间
start_time=$(date '+%Y-%m-%d %H:%M:%S')
start_timestamp=$(date +%s)
echo "同步开始:$start_time"

# 检查是否安装了rsync
if ! command -v rsync &> /dev/null; then
    echo "rsync未安装,正在尝试安装..."
    sudo apt-get update
    if sudo apt-get install -y rsync; then
        echo "rsync安装成功"
    else
        echo "rsync安装失败,请手动安装后再试" >&2
        exit 1
    fi
else
    echo "rsync已安装,无需重新安装"
fi

##---------------------- 你要修改的地方 ----------------------##
# 定义源目录
source_dir="/mnt/mydisk/home/"

# 定义目标目录数组
target_dirs=(
     "/mnt/Ubuntu-NFS/home/"
     # 在这里添加更多的目标目录
)
##---------------------- 你要修改的地方 ----------------------##

# 函数用于同步目录并计算传输完成度
sync_and_check() {
    local source_dir=$1
    local target_dir=$2
    local dir_name=$3

    # 检查目标目录是否存在,若不存在则创建
    if [ ! -d "$target_dir" ]; then
        echo "目标目录 $target_dir 不存在,正在创建..."
        mkdir -p "$target_dir"
        if [ $? -ne 0 ]; then
            echo "创建目标目录失败,请检查权限。" >&2
            return 1
        fi
    fi

    # 执行同步操作
    rsync -avhzp --progress --delete "$source_dir" "$target_dir" 2>&1
    local rsync_status=$?

    # 计算源目录和目标目录的文件大小
    local source_size=$(du -sb "$source_dir" | cut -f1)
    local target_size=$(du -sb "$target_dir" | cut -f1)

    # 计算传输完成度
    local completion
    if [ "$target_size" -gt 0 ] && [ "$source_size" -gt 0 ]; then
        completion=$(awk "BEGIN {printf \"%.2f\", ($target_size / $source_size) * 100}")
    else
        completion="0.00"
    fi

    # 输出结果
    if [ $rsync_status -eq 0 ]; then
        echo "同步操作成功完成($dir_name):"
        echo "- 传输完成度: ${completion}%"
    else
        echo "同步失败($dir_name),请检查日志以获取更多信息。"
    fi
}

# 循环遍历所有目标目录并同步
for index in "${!target_dirs[@]}"; do
    target_dir="${target_dirs[$index]}"
    dir_name="路径$((index + 1))"
    sync_and_check "$source_dir" "$target_dir" "$dir_name"
done

echo "--------------------------------"
echo "同步开始:$start_time"
echo "--------------------------------"
# 获取结束时间
end_time=$(date '+%Y-%m-%d %H:%M:%S')
end_timestamp=$(date +%s)
echo "同步完成:$end_time"
echo "--------------------------------"
# 计算总用时
total_time=$((end_timestamp - start_timestamp))
echo "脚本执行总用时:$total_time 秒"
echo "--------------------------------"
echo "源目录路径  :$source_dir"
echo "目标目录列表:"
printf '  %s\n' "${target_dirs[@]}"
echo "--------------------------------"
EOF

2 、1panel 计划任务(caddy配置同步)

1
/mnt/mydisk/my-sh/rsync/caddy-rsync.sh

二 、Linux 计划任务(caddy配置同步)(正在使用)

1 、添加计划任务(追加命令)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
## 每日02:10同步 caddy 静态目录
{ crontab -l; echo ""; } | crontab -
{ crontab -l; echo "## 每日02:10同步 caddy 静态目录"; } | crontab -
{ crontab -l; echo "10 2 * * * mkdir -p /mnt/ARS2-NFS/反向代理/caddy-bak/html && rsync -avhzp --progress --delete /var/www/html/* /mnt/ARS2-NFS/反向代理/caddy-bak/html/"; } | crontab -

## 每日02:15,同步 caddy 配置文件目录
{ crontab -l; echo ""; } | crontab -
{ crontab -l; echo "## 每日02:15,同步 caddy 配置文件目录"; } | crontab -
{ crontab -l; echo "15 2 * * * mkdir -p /mnt/ARS2-NFS/反向代理/caddy-bak/caddy && rsync -avhzp --progress --delete /usr/local/caddy/* /mnt/ARS2-NFS/反向代理/caddy-bak/caddy/"; } | crontab -


crontab -l ## 查看是否成功

2 、列出当前用户的Cron任务

1
crontab -l

3 、编辑Cron任务

1
crontab -e

4 、删除当前用户的所有Cron任务

1
crontab -r