Compac.sh - Compactador de arquivos
Publicado por Sandro Marcell 02/04/2007
[ Hits: 5.989 ]
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
Pequeno gerador de relatório da rede (CSV)
Gerenciar usuários do OpenLDAP com Sistema ZIMBRA
Script simples para cálculos com dialog
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
Como fazer a conversão binária e aplicar as restrições no Linux
Como quebrar a senha de um servidor Linux Debian
Como bloquear pendrive em uma rede Linux
Um autoinstall.yaml para Ubuntu com foco em quem vai fazer máquina virtual
Instalar GRUB sem archinstall no Arch Linux em UEFI Problemático









