data_preparation.sh 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #!/bin/bash
  2. # 检查到未定义的变量则停止执行并报错
  3. set -u
  4. # 检查参数数量
  5. if [ "$#" -ne 1 ]; then
  6. echo "Error: Incorrect number of arguments"
  7. echo "Usage: $0 ZIP_FILE_PATH"
  8. exit 1
  9. fi
  10. ZIP_FILE_PATH=$1
  11. SIMULATION_PATH="/home/cicv/work/pji_desktop/simulation"
  12. UNZIP_DATA_PATH="/home/cicv/work/pji_desktop/tmp_download/simulation_zip/data"
  13. # 检查zip文件是否存在
  14. if [ -e "$ZIP_FILE_PATH" ]; then
  15. echo "The file exists: $ZIP_FILE_PATH"
  16. else
  17. echo "The file does not exist: $ZIP_FILE_PATH"
  18. exit 1
  19. fi
  20. # 敏感目录列表
  21. SENSITIVE_DIRS=(
  22. "/"
  23. "/bin"
  24. "/boot"
  25. "/dev"
  26. "/etc"
  27. "/home"
  28. "/lib"
  29. "/lib64"
  30. "/opt"
  31. "/proc"
  32. "/root"
  33. "/sbin"
  34. "/sys"
  35. "/tmp"
  36. "/usr"
  37. "/var"
  38. "/home/cicv"
  39. )
  40. # 判断某目录是否为敏感目录
  41. is_sensitive_directory() {
  42. local dir="$1"
  43. for sensitive_dir in "${SENSITIVE_DIRS[@]}"; do
  44. if [[ "$dir" == "$sensitive_dir" ]]; then
  45. return 0 # 敏感目录
  46. fi
  47. done
  48. return 1 # 非敏感目录
  49. }
  50. # 清除历史文件
  51. # 检查要删除的目录是否为空
  52. if [[ -z "$UNZIP_DATA_PATH" ]]; then
  53. echo "Error: Variable UPDATE_DATA_PATH is not set or empty"
  54. exit 1
  55. fi
  56. # 检查要删除的目录是否为敏感目录
  57. if is_sensitive_directory "$UNZIP_DATA_PATH"; then
  58. echo "Error: '$UNZIP_DATA_PATH' is a sensitive directory and can not be deleted!"
  59. exit 1
  60. fi
  61. echo "Starting deleting old files: $UNZIP_DATA_PATH..."
  62. # 删除对应目录
  63. sudo rm -rf "$UNZIP_DATA_PATH"
  64. echo "Old files deleted: $UNZIP_DATA_PATH"
  65. # 解压文件
  66. echo "Starting decompressing zip file: $ZIP_FILE_PATH..."
  67. ## 解压zip文件
  68. unzip -o "$ZIP_FILE_PATH" -d "$UNZIP_DATA_PATH" # -o表示覆盖现有文件
  69. ## 解压data目录
  70. unzip -o "$UNZIP_DATA_PATH/data.zip" -d "$UNZIP_DATA_PATH/data" # -o表示覆盖现有文件
  71. echo "Zip file decompressed: $ZIP_FILE_PATH"
  72. # 复制文件到项目目录
  73. ## data目录
  74. echo "Starting copying directory: $UNZIP_DATA_PATH/data to $SIMULATION_PATH/data/pjirobot/data..."
  75. cp -r "$UNZIP_DATA_PATH/data" "$SIMULATION_PATH/data/pjirobot/data"
  76. echo "Directory copy successfully"
  77. ## origin_map.bag
  78. echo "Starting copying file: $UNZIP_DATA_PATH/origin_map.bag to $SIMULATION_PATH/data/map_bag..."
  79. cp "$UNZIP_DATA_PATH/origin_map.bag" "$SIMULATION_PATH/data/map_bag"
  80. echo "File copy successfully"
  81. ## map.world
  82. echo "Starting copying file: $UNZIP_DATA_PATH/map.world to $SIMULATION_PATH/catkin_ws/src/SimulationEnvs/worlds..."
  83. cp "$UNZIP_DATA_PATH/map.world" "$SIMULATION_PATH/catkin_ws/src/SimulationEnvs/worlds"
  84. echo "File copy successfully"
  85. ## map.pgm
  86. echo "Starting copying file: $UNZIP_DATA_PATH/map.pgm to $SIMULATION_PATH/catkin_ws/src/Navigation/map..."
  87. cp "$UNZIP_DATA_PATH/map.pgm" "$SIMULATION_PATH/catkin_ws/src/Navigation/map"
  88. echo "File copy successfully"
  89. ## map.yaml
  90. echo "Starting copying file: $UNZIP_DATA_PATH/map.yaml to $SIMULATION_PATH/catkin_ws/src/Navigation/map..."
  91. cp "$UNZIP_DATA_PATH/map.yaml" "$SIMULATION_PATH/catkin_ws/src/Navigation/map"
  92. echo "File copy successfully"
  93. echo "Data preparation done."