backup 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #!/bin/sh
  2. #set -x
  3. # VARIABLES
  4. # TESTS (shitloads)
  5. # BU FUNCTIONS
  6. # MAIN
  7. #----------------------------------------
  8. # VARIABLES
  9. #----------------------------------------
  10. bu_disk="/media/disk"
  11. bu_folder="$bu_disk"/backup
  12. user_folder="/home/user"
  13. user_folder_bu="$bu_folder"/"${user_folder##*/}".configs
  14. etc_folder="/etc"
  15. etc_folder_bu="$bu_folder"/etc
  16. option="$1"
  17. #----------------------------------------
  18. # TESTS
  19. #----------------------------------------
  20. #if [ $(id -u) -ne 0 ]; then
  21. # printf "Run as root\n"
  22. # exit 1
  23. #fi
  24. usage () {
  25. printf "
  26. Usage: backup [options]
  27. -h | --help
  28. display help
  29. -d | --default
  30. backup etc and user config files to a mounted stick/disk/sd
  31. edit variables:
  32. backup_folder (mountpoint)
  33. home_folder (user who owns the configs)
  34. -f | --force
  35. force to backup without a mounted disk/stick/sd/...
  36. edit variables:
  37. backup_folder (not mounted )
  38. home_folder (user who owns the configs)
  39. \n"
  40. exit 0
  41. }
  42. check_mount () {
  43. if ! mount | grep "$bu_disk"; then
  44. printf "%s not mounted\n" "$bu_disk"
  45. printf "mount it or edit the variable bu_disk\n"
  46. printf "use -f if you want to back up to the local disk"
  47. exit 1
  48. fi
  49. }
  50. check_user () {
  51. if ! [ -d "$user_folder" ]; then
  52. printf "%s doesn't exit\nEdit the variable: user_folder\n" "$user_folder"
  53. exit 1
  54. fi
  55. }
  56. check_folders () {
  57. if ! [ -d "$bu_folder" ]; then
  58. mkdir "$bu_folder" || \
  59. { printf "mkdir %s failed\n" "$bu_folder"; exit 1; }
  60. fi
  61. if ! [ -d "$user_folder_bu" ]; then
  62. mkdir "$user_folder_bu" || \
  63. { printf "mkdir %s failed\n" "$user_folder_bu"; exit 1; }
  64. fi
  65. if ! [ -d "$etc_folder_bu" ]; then
  66. mkdir "$etc_folder_bu" || \
  67. { printf "mkdir %s failed\n" "$etc_folder_bu"; exit 1; }
  68. fi
  69. }
  70. #----------------------------------------
  71. # BU FUNCTIONS
  72. #----------------------------------------
  73. bu_home_config () {
  74. rsync -auv --delete "$user_folder"/.[!.]* "$user_folder_bu"
  75. }
  76. bu_etc () {
  77. rsync -auv --delete "$etc_folder" "$etc_folder_bu"
  78. }
  79. #----------------------------------------
  80. # MAIN
  81. #----------------------------------------
  82. while :; do
  83. case $option in
  84. -h|--help) usage; exit 0;;
  85. -d|--default) check_mount;
  86. check_user;
  87. check_folders;
  88. bu_home_config;
  89. bu_etc;
  90. break ;;
  91. -f|--force) check_user;
  92. check_folders;
  93. bu_home_config;
  94. bu_etc;
  95. break;;
  96. *) usage; break;;
  97. esac
  98. done