Compac.sh - Compactador de arquivos
Publicado por Sandro Marcell 02/04/2007
[ Hits: 5.993 ]
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
Script para habilitar um pendrive a dar boot no VirtualBox
Detectar sistemas operacionais dos dispositivos na rede via TTL
Script em Dialog pesquisa nome do banco no mysql
Gerar backup do MySQL ou Postgres
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Como fazer a instalação do Samba
Como fazer a conversão binária e aplicar as restrições no Linux
Instalação do cosmic no archlinux (0)
Formas seguras de instalar Debian Sid [RESOLVIDO] (14)









