Compac.sh - Compactador de arquivos
Publicado por Sandro Marcell 02/04/2007
[ Hits: 6.105 ]
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
OH MY ALIAS - Crie seu alias facilmente
del_user - cuida dos 4 passos para remover um usuário do sistema
Mensagem de volume alto quando o fone de ouvido está conectado
File Browser: Crie sua Nuvem Pessoal Privada
A produção de áudio e vídeo no Linux e as distribuições dedicadas a esse fim
Criptografando sua Home com Gocryptfs para tristeza do meliante
A Involução do Linux e as Lambanças Desnecessárias desde o seu Lançamento
O Journal no Linux para a guarda e consulta de logs do sistema
Gerenciamento de Vídeo Híbrido (Intel/NVIDIA) via nvidia-prime no Ubuntu e derivados
Assistindo IPTV no Linux com Fred TV e Lista Free TV
Impressora Tomate MDK-007 no Ubuntu (ou qualquer distro Linux)
Acelerando a compilação de pacotes no Arch Linux (AUR) usando todos os núcleos do processador
Depois não querem que eu fale sobre as baseadas... (4)
Tive um problema ao abrir minha partição Btrfs. Como posso resolver is... (0)









