archive.sh 620 B

12345678910111213141516171819202122232425262728293031
  1. #!/usr/bin/env bash
  2. set -euo pipefail # bash strict mode
  3. display_help(){
  4. echo "Usage: ${0##*/} [ext] <file/s>"
  5. exit 2
  6. }
  7. # if extension is not provided, use tar.gz
  8. if [[ -e "${1:-}" ]]; then
  9. EXTENSION="tar.gz"
  10. else
  11. EXTENSION="$1"
  12. shift 1
  13. fi
  14. [[ $# -lt 1 ]] && display_help
  15. case "$EXTENSION" in
  16. zip) cmd="zip -r9" ;;
  17. 7z) cmd="7z a -t7z -mx=9" ;;
  18. tar) cmd="tar -uvf" ;;
  19. tar.*) cmd="tar -cavf" ;;
  20. # tar.zst) cmd="tar -c -I'zstd --ultra -filefile -T0' -vf" ;;
  21. h|\?|:|*) display_help ;;
  22. esac
  23. DATE="$(date +'%F_%H%M%S')"
  24. $cmd "archive_${DATE}_${1}.${EXTENSION}" -- "$@"