Last active
September 21, 2018 12:43
-
-
Save rstriquer/4f3bda933e85cd7f703797149aa45770 to your computer and use it in GitHub Desktop.
simple bash backup script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Format: UTF8 | |
PATH=/usr/local/bin/:/usr/bin/:/bin/:$PATH | |
ajuda() { | |
echo "Faz backup do Usuario" | |
echo | |
echo "Exemplo de uso: " | |
echo " "`basename $0`" go" | |
echo | |
echo "Parametros suportados:" | |
echo " --help) Apresenta este help" | |
echo " --daily) Executa o backup diario de alguns arquivos" | |
echo " --backup-full) Executa o backup do sistema de arquivos em um HD externo" | |
echo " --restore-full) Restaura o sistema de arquivos de um HD externo" | |
echo " --restore-from-desktop) Restaura o sistema de arquivos de um desktop externo" | |
} | |
if [ "$1" = "" ]; then | |
ajuda; | |
exit; | |
fi | |
ARGS=$(getopt -s bash --options x --longoptions help,daily,zip,backup-full,restore-from-desktop,restore-full -q -- "$@" ) | |
eval set -- "$ARGS" | |
while true; do | |
# echo $1" "$2 | |
case "$1" in | |
--help) | |
ajuda; | |
exit; | |
;; | |
--daily) | |
exec="daily"; | |
from=$HOME; | |
to=$(pwd); | |
break; | |
;; | |
--restore-from-desktop) | |
exec="restore-from-desktop"; | |
from=$HOME; | |
to=$(pwd); | |
break; | |
;; | |
--zip) | |
exec="zip"; | |
from=$HOME; | |
to=$(pwd); | |
break; | |
;; | |
--backup-full) | |
exec="backup-full"; | |
from=$HOME; | |
to=$(pwd); | |
break; | |
;; | |
--restore-full) | |
exec="restore-full"; | |
from=$(pwd); | |
to=$HOME; | |
break; | |
;; | |
--break) ;; | |
esac | |
shift; | |
done | |
if [ -z $exec ]; then | |
echo "ERRO: Necessario informar o comando de execucao"; | |
ajuda | |
exit; | |
fi | |
shopt -s dotglob | |
if [ "$exec" = "daily" ]; then | |
# echo "From: $from"; | |
# echo "To: $to"; | |
cd $HOME | |
if [ ! -d "backup" ]; then | |
mkdir backup | |
fi | |
if [ ! -w "backup" ]; then | |
exit "diretorio ~/backup esta com problema de escrita" | |
fi | |
cd backup | |
echo -n "Backups antigos excluidos: " >> /tmp/backup-temp.log | |
FILES=`ls -1` | |
OLDER=`ls -1t | head -n30 | tail -n1` | |
for FILE in $FILES; do | |
if [ $FILE -ot $OLDER ]; then | |
echo -n $FILE" " | |
# rm -rf $FILE | |
fi | |
done | |
echo " " | |
curdate=$(date +%Y%m%d%H%M) | |
if [ ! -d "$curdate" ]; then | |
mkdir $curdate | |
fi | |
if [ ! -w "$curdate" ]; then | |
exit "diretorio ~/backup/"$curdate" esta com problema de escrita" | |
fi | |
cd $curdate | |
cp -a $HOME/Documents/WB4B/tarefas.odb . | |
cp -a $HOME/\.local/share/rhythmbox/playlists.xml . | |
cp -a $HOME/\.mysql/workbench . | |
echo "Backup $curdate executado com sucesso" | |
exit | |
fi | |
if [ "$exec" = "restore-from-desktop" ]; then | |
ORIGEMHOST=192.168.0.9 | |
SENHA='Desir33' | |
sudo scp ricardo@$ORIGEMHOST:/etc/hosts /etc/hosts | |
scp ricardo@$ORIGEMHOST:/home/ricardo/.mysql/workbench/wb_options.xml ~/.mysql/workbench/wb_options.xml | |
scp ricardo@$ORIGEMHOST:/home/ricardo/.mysql/workbench/connections.xml ~/.mysql/workbench/connections.xml | |
scp ricardo@$ORIGEMHOST:/home/ricardo/.local/share/rhythmbox/playlists.xml ~/.local/share/rhythmbox/playlists.xml | |
mkdir ~/.ssh | |
chmod 700 ~/.ssh | |
scp -R ricardo@$ORIGEMHOST:/home/ricardo/.ssh/* ~/.ssh | |
rsync -azvv -e "ssh -i /home/ricardo/.ssh/git_ricardo" ricardo@$ORIGEMHOST:/home/ricardo/Documents ~/ >> ~/evolucao-backup.log | |
echo "Documentos" | |
rsync -azvv -e "ssh -i /home/ricardo/.ssh/git_ricardo" ricardo@$ORIGEMHOST:/home/ricardo/Downloads ~/ >> ~/evolucao-backup.log | |
echo "Downloads" | |
rsync -azvv -e "ssh -i /home/ricardo/.ssh/git_ricardo" ricardo@$ORIGEMHOST:/home/ricardo/src ~/ >> ~/evolucao-backup.log | |
echo "src" | |
rsync -azvv -e "ssh -i /home/ricardo/.ssh/git_ricardo" ricardo@$ORIGEMHOST:/home/ricardo/apps ~/ >> ~/evolucao-backup.log | |
echo "apps" | |
rsync -azvv -e "ssh -i /home/ricardo/.ssh/git_ricardo" ricardo@$ORIGEMHOST:/home/ricardo/Music ~/ >> ~/evolucao-backup.log | |
echo "Music" | |
rsync -azvv -e "ssh -i /home/ricardo/.ssh/git_ricardo" ricardo@$ORIGEMHOST:/home/ricardo/Pictures ~/ >> ~/evolucao-backup.log | |
echo "Pictures" | |
rsync -azvv -e "ssh -i /home/ricardo/.ssh/git_ricardo" ricardo@$ORIGEMHOST:/home/ricardo/Videos ~/ >> ~/evolucao-backup.log | |
echo "Videos" | |
exit | |
fi | |
if [ "$exec" = "restore-full" ]; then | |
sudo add-apt-repository ppa:webupd8team/atom | |
sudo add-apt-repository "deb http://archive.canonical.com/ $(lsb_release -sc) partner" | |
sudo sh -c 'echo "deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib" >> /etc/apt/sources.list.d/virtualbox.list' | |
wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add - | |
sudo apt-get update | |
sudo apt-get install git qgit rhythmbox mysql-workbench atom skype nautilus-dropbox \ | |
lynx wget nmap zip unzip terminator meld chromium-browser rdesktop teamviewer \ | |
shutter darktable filezilla xmind virtualbox-5.0 \ | |
inkscape | |
cd $to | |
mkdir .ssh | |
cd $to/.ssh | |
rsync -av $from/.ssh/* . | |
dir=Downloads | |
cd $to/$dir | |
rsync -av $from/$dir/* . | |
dir=Documentsq | |
cd $to/$dir | |
rsync -av $from/$dir/* . | |
dir=Pictures | |
cd $to/$dir | |
rsync -av $from/$dir/* . | |
dir=Videos | |
cd $to/$dir | |
rsync -av $from/$dir/* . | |
dir=Music | |
cd $to/$dir | |
rsync -av $from/$dir/* . | |
dir=iMacros | |
cd $to/$dir | |
rsync -av $from/$dir/* . | |
chmod -R 777 $to/src | |
fi | |
if [ "$exec" = "backup-full" ]; then | |
cd $to | |
if [ ! -e $USER ]; then | |
mkdir $USER | |
fi | |
if [ ! -d $USER ]; then | |
echo "Existe um arquivo com o nome do usuario ($USER) e nao e um diretorio"; | |
echo "Nao e possivel executar a copia. Parando a execucao"; | |
exit; | |
fi | |
cd $USER | |
echo -n "Copiando arquivos do usuario \"$USER\" para "; | |
pwd | |
rsync -av $from/* . | |
fi | |
if [ "$exec" = "zip" ]; then | |
curdate=$(date +%Y%m%d%H%M) | |
tolog=$to/$USER.$curdate.log | |
to=$to/$USER.$curdate.tar.gz | |
echo "Copiar arquivos do usuario \"$USER\" para $to"; | |
read -r -p "Deseja cancelar o Deploy? [Y/N/n] " response | |
if [ "$response" != "Y" ]; then | |
echo | |
echo "Backup CANCELADO!" | |
echo | |
exit | |
fi | |
echo | |
echo -n "Inicio da operacao: " >> $tolog 2>&1 | |
date >> $tolog 2>&1 | |
echo "Copiando arquivos do usuario \"$USER\" para $to" >> $tolog 2>&1; | |
nohup nice -10 tar -czf $to $from >> $tolog 2>&1 | |
echo -n "Fim da operacao: " >> $tolog 2>&1 | |
date >> $tolog 2>&1 | |
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Format: UTF8 | |
# Sometimes there are some strange names which can generate a filesystem inconsistency if not | |
# corrected, therefore this script can be used to find files with those filename inconsistensies | |
PATH=/usr/local/bin/:/usr/bin/:/bin/:$PATH | |
find . -type f > filenames | |
while read filename; do | |
stripped="$(printf '%s\n' "$filename" | tr -d -C '[[:alnum:]][[:space:]][[:punct:]]')" | |
test "$filename" = "$stripped" || printf '%s\n' "$filename"; | |
done < filenames |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
mysqldump \ | |
otrs2 \ | |
--host=192.168.0.100 \ | |
--user=root \ | |
--password=479fWAwzquCUU4Ky \ | |
--skip-lock-tables `# nao travar a tabela (gera um backup não consistente)` \ | |
--skip-comments `#evita adicinar informações extras como nome do servidor, versão do mysqldump e etc` \ | |
--disable-keys `# desliga chaves no retorno do backup deixando o restore mais rapido` \ | |
--quick `#com isto o mysql não gera um buffer e depois facaa o stream deste, ele faz um stream de linha a linha` \ | |
--extended-insert `# Resulta em um arquivo menor e mais rapido para carga sendo um insert extendido (mais de uma linha da tabela inserida por comando insert)` \ | |
--hex-blob `#transforma valores binarios em hexa (for example, 'abc' becomes 0x616263)` \ | |
--insert-ignore \ | |
--set-charset \ | |
>> $1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment