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