PKG Sync v4.0 - utilitário para backup de pacotes DEB baixados
Publicado por Mauricio Ferrari (última atualização em 03/02/2021)
[ Hits: 2.188 ]
Homepage: https://www.youtube.com/@LinuxDicasPro
Esse script faz basicamente o seguinte: backup dos arquivos em cache, verifica quais pacotes estão instalados no sistema e o que não estiver, ele exclui.
Já tinha postado outras versões, porém essa está bem melhorada e o código está mais decente.
Tentei fazê-lo o mais otimizado possível. Ele conta com os seguintes parâmetros:
- ls = Lista os Pacotes em Cache.
- rm = Remove os Pacotes em Cache. Usa o apt clean.
- cp = Faz o Backup dos Pacotes em Cache.
- check = Checa quais são os Pacotes Obsoletos.
- clean = Checa e Exclui os Pacotes Obsoletos.
O local de Backup deve ser configurado manualmente e as cores você muda conforme preferir.
#!/bin/bash
### PKG Sync v4.0 - 02/12/2020 - By Mauricio Ferrari - <m10ferrari1200@gmail.com>
### Uso: ./pkgsync <check/clean/rm/ls/cp>
##################################################################################
### Configuração Manual do Destino dos Pacotes
DR=~/DDE
### Constantes A=${A:-B}
DB=${DB:-/var/cache/apt/archives/*deb} #*/
BN=${BN:-/usr/bin}
NL=${NL:-/dev/null}
TM=${TM:-temp}
L1=${L1:-$TM/lst1}
L2=${L2:-$TM/lst2}
CL=${CL:-$TM/clean}
### Padrão de Cores
BL=${BL:-\\033[1;47;34m}
GR=${GR:-\\033[0;47;30m}
RD=${RT:-\\033[1;47;31m}
YL=${RT:-\\033[1;40;33m}
CN=${CN:-\\033[1;33m}
WT=${WT:-\\033[1;37m}
RT=${RT:-\\033[0m}
### Finalização do script
fim()
{
[[ -e $TM ]] && rm -r $TM 2> $NL
[[ $ERROR == 1 ]] && exit 1
[[ $ERROR == 0 ]] && exit 0
}
### Informação do Sistema
info()
{
echo -e "\n $GR $(basename $0) - Backup dos Pacotes baixados em Cache $RT \n\n $GR Uso: $RT \n $GR $(basename $0) <ls|rm|cp|check|clean> $RT"
echo -e "\n $GR Parâmetros: $RT $GR - ls = Listar os Pacotes em Cache. $RT \n $GR - rm = Remover os Pacotes em Cache. $RT"
echo -e "$GR - cp = Copiar os Pacotes em Cache. $RT \n $GR - check = Verificar Pacotes Duplicados. $RT"
echo -e "$GR - clean = Limpar Pacotes Duplicados. $RT\n"
fim
}
### Listar Pacotes em Cache
list()
{
echo -e "$WT"
ls --color=auto $( echo "$DB" | cut -d '*' -f 1 )
fim
}
### Remover Pacotes em Cache
rmcache()
{
sudo apt-get clean
echo -e "\n $BL Cache APT redefinido. $RT"
fim
}
### Comando para Cópia
gocopy()
{
echo -e "$CN"
cp -v $DB $DR | cut -d '/' -f 6 | sed "s/'.*'/ copiado/g"
echo -e "$RT"
}
### Copiar Pacotes em Cache
copy()
{
[[ `ls $DB 2> $NL` ]] && gocopy
[[ ! `ls $DB 2> $NL` ]] && echo -e "\n $YL Nada Copiado. $RT"
fim
}
### Verificar LOGs Existentes
logcheck()
{
CON=0
CNT=0
while (( $CON == 0 )); do
[[ ! -e ~/excluded$CNT.log ]] && CON=1 && DS=~/excluded$CNT.log
[[ -e ~/excluded$CNT.log ]] && let CNT=CNT+1;
done
}
### Gerar os Arquivos para a Comparação
listgen()
{
logcheck
### Controle de Erro
[[ ! -e "$DR" ]] && echo -e "\n $RD O diretório $DR não existe. $RT" && ERROR=1 && fim
[[ `ls --ignore=*.deb $DR` ]] && echo -e "\n $RD O diretório $DR deveria conter só arquivos DEB. $RT" && ERROR=1 && fim
### Gerando as listas de comparação.
mkdir $TM 2> $NL
apt list --installed 2> $NL | sed -e 's| \[.*\]||g' -e 's|/.*now |_|g' -e 's| |_|g' -e '1d' 1> $L1
ls $DR | sed -e 's|\.deb||g' -e 's|%3a|:|g' > $L2
}
### Visualizando o Arquivo de LOG.
viewlog()
{
VF=0
[[ ! `cat $DS 2> $NL` ]] && VF=1 && echo -e "\n $YL Nenhum novo log foi gerado. Não há pacotes obsoletos. $RT"
[[ ! "xdg-open $DS" ]] && [[ $VF = 0 ]] && echo -e "\n $YL Não foi possível encontrar um editor para visualizar o log. $RT"
[[ "xdg-open $DS" ]] && [[ $VF = 0 ]] && xdg-open $DS
fim
}
### Verificar Pacotes Duplicados
checkup()
{
listgen
for X in `cat $L2`; do
[[ $(cat $L1 | grep -w $X) = "" ]] && echo $X >> $DS
done
viewlog
}
### Comando para Limpeza
goclean()
{
echo $X >> $DS
echo $X | sed -e 's|:|%3a|g' > $CL
rm $DR/$(cat $CL).deb
}
### Limpar Pacotes Duplicados
cleaner()
{
listgen
for X in `cat $L2`; do
[[ $(cat $L1 | grep -w $X) = "" ]] && goclean
done
viewlog
}
### Função Principal
main()
{
ERROR=0
[[ $1 = "" ]] && info
[[ $1 = "ls" ]] && list
[[ $1 = "rm" ]] && rmcache
[[ $1 = "cp" ]] && copy
[[ $1 = "check" ]] && checkup
[[ $1 = "clean" ]] && cleaner
}; main $1
rotate.sh - Rotaciona arquivos de acordo com a data
Backups de servidor CentOS com cPanel/WHM para servidor VPS Windows Server 2008
Nenhum comentário foi encontrado.
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
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)
Instalação não está resolvendo as dependencias (2)
Captação de áudio no zorin linux começa a diminuir com o tempo (5)
Alternativas ao Multilogin para gerenciamento de múltiplas contas/prof... (0)









