Compac.sh - Compactador de arquivos

Publicado por Sandro Marcell 02/04/2007

[ Hits: 5.989 ]

Homepage: http://sanmarcell.wordpress.com

Download compac.sh




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.

  



Esconder código-fonte

#!/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

Scripts recomendados

Ver consumo mensal Speedy

Autenticação Speedy Business

Pequeno gerador de relatório da rede (CSV)

Gerenciar usuários do OpenLDAP com Sistema ZIMBRA

Script simples para cálculos com dialog


  

Comentários
[1] Comentário enviado por HeltonBarbosa em 06/04/2007 - 20:58h

Gostei, muito bom!!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts