Compac.sh - Compactador de arquivos
Publicado por Sandro Marcell 02/04/2007
[ Hits: 5.936 ]
Homepage: http://sanmarcell.wordpress.com
Shell script que compacta arquivos nos seguintes formatos:
.gz, .bz2. .tar.gz e .tar.bz2
Além de brincar com alguns códigos de cores.
#!/bin/bash
## Compac.sh - Compactador de arquivos em shell script
## Escrito por: Sandro Marcell P. Barbosa (Boa Vista - Roraima)
## E-mail: sandro_marcell@yahoo.com.br
## Slackware GNU/Linux 10.1
# Este script compacta arquivos e diretórios.
# São necessários os programas: Gzip, Bzip2 e Tar.
# Uso: nome_script /caminho/arquivo ou diretório.
# Use Ctrl+c para sair.
# Checa se o usuário passou algum parâmetro para o script:
if [ $# -eq 0 ]; then
   echo -e '\e[1;31;43m'"\n\aUso:\e[1;37;42m `basename $0` \
/caminho/arquivo ou diretório\n"; tput sgr0
   exit
elif [ $# -ge 2 ]; then
   echo -e '\e[1;31;43m'"\n\aEspecifique um arquivo por vez!\n"
   tput sgr0
   exit
fi
# Caso tenha passado, o script continua!
# Checa se o parâmetro passado (o arquivo), existe:
if [ ! -e $BASH_ARGV ]; then
   echo -e '\e[1;33;44m'"\n\aArquivo ou diretório não encontrado!\n"
   tput sgr0
   exit 
fi
# Se existir, checa se o usuário pode compactá-lo:
if [ ! -O $BASH_ARGV ]; then
   echo -e '\e[1;33;41m'"\n\aSem permissão para compactar!\n"
   tput sgr0
   exit 
fi
# Se as duas condições acima forem satisfeitas, o script apresenta
# na tela do terminal, essas opções ao usuário:
echo -ne '\e[1m'"\e[1;33;41m\nQual compactador deseja utilizar?\n
      [Programa]           [Extensão]  
1  |  Gzip        |     |  .gz        |
2  |  Bzip2       |     |  .bz2       |
3  |  Tar + Gzip  |     |  .tar.gz    |
4  |  Tar + Bzip2 |     |  .tar.bz2   |\n
Digite o número da opção desejada! (1-4):"
tput sgr0
read TIPO
# Funções que serão utilizadas na construção "case":
Aguarde () {
   echo -e '\e[1m'"\e[5;36m\nCompactando... Aguarde!"
   tput sgr0 
   sleep 1
}
Sucesso () {
   echo -e '\e[1;32m'"\e[4m\nCompactação finalizada com sucesso!\n"
   tput sgr0
}
Erro () { echo -e '\e[1;31;43m'"\aErro!\n"; tput sgr0; } 
# Caso o processo seja interrompido, um backup do arquivo
# será criado no diretório /home do usuário por segurança:
trap "dd if=$BASH_ARGV of=$BASH_ARGV.bak 2> /dev/null" 2 3 15
# Início da construção "case", que determinará o comando a ser executado:
case $TIPO in
   
   1)
   Aguarde
   if gzip -f -9 $BASH_ARGV 2> /dev/stdout; then
      Sucesso
   else
      Erro
      exit
   fi ;;
   
   2)
   Aguarde
   if bzip2 -z -k -9 $BASH_ARGV 2> /dev/stdout; then
      Sucesso
   else
      Erro
      exit
   fi ;;
   
   3)
   Aguarde
   if tar -c -z -f $BASH_ARGV.tar.gz $BASH_ARGV 2> /dev/stdout; then
      Sucesso
   else
      Erro
      exit
   fi ;;
   
   4)
   Aguarde
   if tar -c -j -f $BASH_ARGV.tar.bz2 $BASH_ARGV 2> /dev/stdout; then
      Sucesso
   else
      Erro
      exit
   fi ;;
   
   *)
   echo -e '\e[1;31;43m'"\n\aOpção inválida:\e[1;35;47m Escolha uma \
entre 1 e 4.\n"; tput sgr0 ;;
esac
Alterar o endereço MAC de uma interface de rede
Raizes de equações do 2o grau no dc
Descom.sh - Descompactador de arquivos
Script para controle de banda usando FreeRADIUS, PPPoE e HTB
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?









