SyncdbTools.sh 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. #!/bin/bash
  2. ### BEGIN INIT INFO
  3. # Provides: Liuzhiting
  4. # Required-Start: $local_fs $remote_fs $network $syslog
  5. # Required-Stop: $local_fs $remote_fs $network $syslog
  6. # Default-Start: 2 3 4 5
  7. # Default-Stop: 0 1 6
  8. # Short-Description: starts the mysql migrate
  9. # Description: A database migration script for a back-end server system.
  10. ### END INIT INFO
  11. function mysqlDump(){
  12. echo 你输入的文件名称是:$3.txt
  13. echo $1 $2 $3 $4 $3.txt $(date +%Y%m%d)
  14. filePath="/mnt/sql/$(date +%Y%m%d)/"
  15. if [ ! -x "$filePath" ];then
  16. mkdir -p "$filePath"
  17. fi
  18. if [ "$2" == "all" ];then
  19. echo 你选择的是全部备份,正在备份迁移请等待...
  20. mysqldump -u root -pliuzhiting $1 > $filePath$3.txt
  21. filesize=$(stat -c "%s" $filePath$3.txt)
  22. if [ $filesize -gt 0 ];then
  23. fullPath=$filePath$3.txt
  24. echo "$fullPath $filesize 1024" | awk '{printf("备份文件全路径是:%s,文件大小:%0.5fkb\n", $1, $2/$3)}'
  25. echo 备份迁移完成...
  26. return 0
  27. else
  28. echo 未知原因,无法备份迁移...
  29. return -1
  30. fi
  31. elif [ "$2" == "table" ];then
  32. echo 你选择的备份的表格是:$4
  33. mysqldump -u root -pliuzhiting $1 $4 > $filePath$3.txt
  34. filesize=$(stat -c "%s" $filePath$3.txt)
  35. if [ $filesize -gt 0 ];then
  36. # echo 备份文件全路径:$filePath$3.txt,文件大小:$[$filesize/1024]kb
  37. fullPath=$filePath$3.txt
  38. echo "$filesize 1024 $fullPath" | awk '{printf("备份文件全路径是:%s,文件大小:%0.5fkb\n", $3, $1/$2)}'
  39. echo 备份迁移完成...
  40. return 0
  41. else
  42. echo 未知原因,无法备份迁移...
  43. return -1
  44. fi
  45. else
  46. echo $2
  47. echo $3
  48. fi
  49. return -1
  50. }
  51. function manageDumpData () {
  52. echo $1 $2 $3 $4
  53. filePath="/mnt/sql/$(date +%Y%m%d)/"
  54. if [ ! -x "$filePath" ];then
  55. echo 正在创建$filePath文件夹
  56. mkdir -p "$filePath"
  57. echo 创建完成...
  58. fi
  59. echo $filePath$3.json
  60. if [ ! -x "$1" ];then
  61. echo 项目文件路径不存在,"$1"...
  62. return -1
  63. fi
  64. cd "$1"
  65. if [ "$2" == "all" ];then
  66. echo 你选择的是备份项目数据库全部表格
  67. if [ ! -f "$1manage.py" ];then
  68. echo 项目路径下不存在"$1manage.py"
  69. return -1
  70. fi
  71. python3 manage.py dumpdata > $filePath$3.json
  72. filesize=$(stat -c "%s" $filePath$3.json)
  73. if [ $filesize -gt 0 ];then
  74. fullPath=$filePath$3.json
  75. echo "$fullPath $filesize 1024" | awk '{printf("备份文件全路径是:%1,文件大小:%0.5fkb\n", $1, $2/$3}'
  76. echo 备份迁移完成...
  77. return 0
  78. else
  79. echo 未知原因,无法备份迁移...
  80. return -1
  81. fi
  82. elif [ "$2" == "app" ];then
  83. echo 你选择备份Appname名称是:$4
  84. python3 manage.py dumpdata $4 > $filePath$3.json
  85. filesize=$(stat -c "%s" $filePath$3.json)
  86. if [ $filePath -gt 0 ];then
  87. fullPath=$filePath$3.json
  88. echo "$fullPath $filesize 1024" | awk '{printf("备份文件全路径是:%1,文件大小:%0.5fkb\n", $1, $2/$3}'
  89. echo 备份迁移完成...
  90. return 0
  91. else
  92. echo 未知原因,无法备份迁移...
  93. return -1
  94. fi
  95. else
  96. echo "YYYYY"
  97. return 0
  98. fi
  99. return -1
  100. }
  101. read -t 30 -p "请输入迁移方式(mysql自带方式[dump]或者Python方式[migrate],如果你选择的是mysql方式请再输入要备份的数据库名称[请按空格隔开,30秒完成输入]):" migrate dbname
  102. echo "$migrate" $dbname
  103. if [ ! $migrate ];then
  104. migrate="dump"
  105. dbname='Ansjer'
  106. fi
  107. if [ "$migrate" == "dump" ];then
  108. echo 你选择的是MySQL备份方式,并且你要备份的数据库是:$dbname
  109. read -t 30 -p "请先输入文件名称,然后选择备份所有数据[all] 或者备份其中一个表格[table],如果选择的备份其中一个表格请再输入表格名称[每个输入用表格隔开]" filename database tablename
  110. echo ddde, $database $filename $tablename
  111. filename=${filename:-dump} #当变量a为null或为空字符串时则var=b var=${a:-b}
  112. database=${database:-all}
  113. mysqlDump $dbname $database $filename $tablename
  114. echo $?
  115. elif [ "$migrate" == "migrate" ];then
  116. echo 你选择的是Python方式备份迁移数据库...
  117. projPath="/mnt/Sharing/Ansjer/"
  118. read -t 30 -p "(请先输入要备份的文件名称,然后是选择要备份appname或者备份全部,如果全部清输入[all],或者输入[app]再输入appnname):" filename database appname
  119. filename=${filename:-dump}
  120. database=${database:-all}
  121. manageDumpData $projPath $database $filename $appname
  122. echo $?
  123. else
  124. echo ay
  125. fi