-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapt_move_work.sh
71 lines (56 loc) · 2.05 KB
/
apt_move_work.sh
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
#!/bin/bash
# 【apt-move 工作】
#
# ==================================================
# 函数名称: CPcheck
# 函数功能: 复制结果检测
# 函数参数:
# $1: 源目录
# $2: 目标目录
#
# ==================================================
function CPcheck(){
# 定义源目录和目标目录
local SOURCE_DIR="${1}"
local TARGET_DIR="${2}"
# 创建一个临时文件来存储源目录的路径列表
local TEMP_LIST_FILE=$(mktemp)
# 使用find命令递归地列出源目录中的所有文件和子目录,并将结果保存到临时文件中
find "$SOURCE_DIR" -type f -o -type d > "$TEMP_LIST_FILE"
echo "File check..."
# 遍历临时文件中的每条路径
while IFS= read -r PATH_ITEM; do
# 提取相对路径(去除源目录前缀)
local RELATIVE_PATH="${PATH_ITEM#$SOURCE_DIR}"
# 构造目标路径
local TARGET_FULL_PATH="$TARGET_DIR$RELATIVE_PATH"
# 检查目标 文件/目录 是否存在
if [ ! -e "$TARGET_FULL_PATH" ]; then
# 目标存在
# echo "[Exist:Source] $PATH_ITEM"
# echo "[Exist:Target] $TARGET_FULL_PATH"
# echo "----------------------------------------"
# else
# 目标不存在
echo -e "\033[1;31m[ Exist:Source] $PATH_ITEM\033[0m"
echo -e "\033[1;31m[Not exist:Target] $TARGET_FULL_PATH\033[0m"
echo "----------------------------------------"
fi
done < "$TEMP_LIST_FILE"
echo "File check... done"
# 清理临时文件
rm "$TEMP_LIST_FILE"
}
##### 函数测试 #####
# CPcheck "/mirrors/debian/pool/main/" "/tmp/pool/"
# 加载配置文件
source main.conf
# 新ISO路径
ISOPath="/mnt/custom/iso"
TargetPath="${ISOPath}/pool/main/"
mkdir -p "${TargetPath}" 2>/dev/null
# 生成软件包仓库文件结构
apt-move -d "${DebianCode}" update
# 复制包到自定义ISO目录中
cp -ar /mirrors/debian/pool/main/* "${TargetPath}"
CPcheck "/mirrors/debian/pool/main/" "${TargetPath}"