Update sync_data.sh
Browse files- sync_data.sh +13 -12
sync_data.sh
CHANGED
|
@@ -18,22 +18,22 @@ mkdir -p ./data
|
|
| 18 |
# 定义函数:清理 TeraCloud 网盘中的旧文件
|
| 19 |
clean_remote_files() {
|
| 20 |
echo "正在清理 TeraCloud 网盘中的旧文件..."
|
| 21 |
-
# 列出
|
| 22 |
-
|
| 23 |
-
if [ -z "$
|
| 24 |
-
echo "无法获取文件列表
|
| 25 |
return
|
| 26 |
fi
|
| 27 |
|
| 28 |
-
# 提取文件名
|
| 29 |
-
|
| 30 |
-
if [ -z "$
|
| 31 |
-
echo "未找到文件
|
| 32 |
return
|
| 33 |
fi
|
| 34 |
|
| 35 |
# 过滤出带有时间戳的文件(webui_*.db)
|
| 36 |
-
TIMESTAMPED_FILES=$(echo "$
|
| 37 |
if [ -z "$TIMESTAMPED_FILES" ]; then
|
| 38 |
echo "未找到带有时间戳的文件,跳过清理"
|
| 39 |
return
|
|
@@ -41,6 +41,7 @@ clean_remote_files() {
|
|
| 41 |
|
| 42 |
# 按文件名排序(假设文件名按时间戳排序)
|
| 43 |
SORTED_FILES=$(echo "$TIMESTAMPED_FILES" | sort -r)
|
|
|
|
| 44 |
# 保留最新的一个文件,删除其他旧文件
|
| 45 |
COUNT=0
|
| 46 |
for FILE in $SORTED_FILES; do
|
|
@@ -57,6 +58,9 @@ clean_remote_files() {
|
|
| 57 |
echo "TeraCloud 网盘清理完成"
|
| 58 |
}
|
| 59 |
|
|
|
|
|
|
|
|
|
|
| 60 |
# 从 WebDAV 下载 webui.db 文件
|
| 61 |
echo "正在从 WebDAV 下载数据库文件..."
|
| 62 |
curl -L --fail --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/webui.db" -o "./data/webui.db" || {
|
|
@@ -65,9 +69,6 @@ curl -L --fail --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/webui.db"
|
|
| 65 |
}
|
| 66 |
echo "下载成功"
|
| 67 |
|
| 68 |
-
# 在第一次运行时清理 TeraCloud 网盘中的旧文件
|
| 69 |
-
clean_remote_files
|
| 70 |
-
|
| 71 |
# 定义同步函数
|
| 72 |
sync_data() {
|
| 73 |
# 首次等待同步间隔
|
|
|
|
| 18 |
# 定义函数:清理 TeraCloud 网盘中的旧文件
|
| 19 |
clean_remote_files() {
|
| 20 |
echo "正在清理 TeraCloud 网盘中的旧文件..."
|
| 21 |
+
# 发送 PROPFIND 请求列出 WebDAV 文件
|
| 22 |
+
RESPONSE=$(curl -s -X PROPFIND --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" -H "Depth: 1" "$WEBDAV_URL")
|
| 23 |
+
if [ -z "$RESPONSE" ]; then
|
| 24 |
+
echo "无法获取 WebDAV 文件列表"
|
| 25 |
return
|
| 26 |
fi
|
| 27 |
|
| 28 |
+
# 解析 XML 响应,提取文件名
|
| 29 |
+
FILE_LIST=$(echo "$RESPONSE" | grep -oP '(?<=<d:href>)[^<]+' | sed 's|.*/||')
|
| 30 |
+
if [ -z "$FILE_LIST" ]; then
|
| 31 |
+
echo "未找到文件"
|
| 32 |
return
|
| 33 |
fi
|
| 34 |
|
| 35 |
# 过滤出带有时间戳的文件(webui_*.db)
|
| 36 |
+
TIMESTAMPED_FILES=$(echo "$FILE_LIST" | grep -E '^webui_[0-9]{2}_[0-9]{2}_[0-9]{4}\.db$')
|
| 37 |
if [ -z "$TIMESTAMPED_FILES" ]; then
|
| 38 |
echo "未找到带有时间戳的文件,跳过清理"
|
| 39 |
return
|
|
|
|
| 41 |
|
| 42 |
# 按文件名排序(假设文件名按时间戳排序)
|
| 43 |
SORTED_FILES=$(echo "$TIMESTAMPED_FILES" | sort -r)
|
| 44 |
+
|
| 45 |
# 保留最新的一个文件,删除其他旧文件
|
| 46 |
COUNT=0
|
| 47 |
for FILE in $SORTED_FILES; do
|
|
|
|
| 58 |
echo "TeraCloud 网盘清理完成"
|
| 59 |
}
|
| 60 |
|
| 61 |
+
# 在第一次运行时清理 TeraCloud 网盘中的旧文件
|
| 62 |
+
clean_remote_files
|
| 63 |
+
|
| 64 |
# 从 WebDAV 下载 webui.db 文件
|
| 65 |
echo "正在从 WebDAV 下载数据库文件..."
|
| 66 |
curl -L --fail --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/webui.db" -o "./data/webui.db" || {
|
|
|
|
| 69 |
}
|
| 70 |
echo "下载成功"
|
| 71 |
|
|
|
|
|
|
|
|
|
|
| 72 |
# 定义同步函数
|
| 73 |
sync_data() {
|
| 74 |
# 首次等待同步间隔
|