Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. #!/bin/bash
  2. export LC_ALL=C
  3.  
  4. archive="$1"
  5. container_name="root_gitea_1"
  6. now=$(date +"%Y%m%d-%H%M%S")
  7. # gitea_dir: it's the directory in the volume attached to the container which contains gitesa' data directory
  8. gitea_dir="/data/containers/gitea"
  9. gitea_data_dir="${gitea_dir}/data"
  10. restore_dir="/tmp/gitea-restore-${now}"
  11. log_file="${restore_dir}/restore-progress.log"
  12. host="127.0.0.1"
  13. port="3307"
  14. database="gitea"
  15. user="root"
  16. password="..."
  17. number_of_args="${#}"
  18.  
  19. error () {
  20. printf "%s: %s\n" "$(basename "${BASH_SOURCE}")" "${1}" >&2
  21. exit 1
  22. }
  23.  
  24. trap 'error "An unexpected error occurred."' ERR
  25.  
  26. sanity_check () {
  27. # Check whether any arguments were passed
  28. if [ "${number_of_args}" -lt 1 ]; then
  29. error "Script requires the absolute path of the .tar.gz backup archive as an argument."
  30. fi
  31. }
  32.  
  33. restore () {
  34. mysqldump_args=(
  35. "-u${user}"
  36. "-p${password}"
  37. "-h${host}"
  38. "-P${port}"
  39. "--add-drop-table"
  40. "--single-transaction"
  41. "--add-locks"
  42. )
  43.  
  44. mysql_args=(
  45. "-u${user}"
  46. "-u${user}"
  47. "-p${password}"
  48. "-h${host}"
  49. "-P${port}"
  50. )
  51.  
  52. docker stop "${container_name}" > /dev/null
  53.  
  54. cd "${restore_dir}"
  55.  
  56. # Save current files
  57. mkdir -p current/data
  58.  
  59. mv "${gitea_data_dir}"/* current/data/
  60.  
  61. # Dump current database
  62. mysqldump "${mysqldump_args[@]}" "${database}" > current/db.sql
  63.  
  64. # Restore files
  65. tar xfz "${archive}"
  66. cp -r data/* "${gitea_data_dir}/"
  67.  
  68. # Restore database
  69. mysql "${mysql_args[@]}" "${database}" < db.*.sql
  70.  
  71. docker start "${container_name}" > /dev/null
  72. }
  73.  
  74. printf "\n========================================================================================="
  75. printf "\nGitea Restore"
  76. printf "\n=========================================================================================\n"
  77.  
  78. mkdir -p "${restore_dir}"
  79.  
  80. sanity_check && restore 2> "${log_file}"
  81.  
  82. if [[ -s "${log_file}" ]]
  83. then
  84. printf "\nRestore failure! Check ${log_file} for more information."
  85. printf "\n=========================================================================================\n\n"
  86. else
  87. printf "...SUCCESS!\n"
  88. printf "You can remove the directory ${restore_dir} if everything looks good."
  89. printf "\n=========================================================================================\n\n"
  90. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement