Dando continuidade ao post anterior onde buscamos milhares de arquivos e executamos um rsync para outro disco.
Neste post vamos ver como usar esta lista de arquivos e remover ou até mesmo enviar eles para o S3, para facilitar a execução dividi esta tarefa em 3 partes, sendo que na primeira parte criamos a nossa lista com base no numero de dias informado na execução.
- Script 01: copiarArquivos.sh 1700
#!/bin/bash
set -x
# Anexar um novo volume na instancia.
# ./copiarArquivos.sh 1500
export OPTIONS="--times --relative --compress --owner --group --recursive"
function error_check {
if [[ $? != 0 ]]; then
echo 'Erro no script!'
exit 1
fi
}
# Exemplo de busca com uso de regex para pegar todos os usuários:
# find /home/ -regextype sed -regex ".*/[a-z\|0-9\]\+/nome_do_diretorio/.*" -type f -mtime +$1 > lista-arquivos.txt
find /home/ -type f -mtime +$1 > lista-arquivos.txt
error_check
for arquivos in $(cat lista-arquivos.txt); do
rsync $OPTIONS $arquivos /novo-disco/
error_check
done
cp lista-arquivos.txt lista-`date +%Y-%m-%d-%H-%M`.txt
Explicando o script acima:
- Na variável OPTIONS temos os atributos que vamos usar no rsync para cada item dr arquivos.
- Logo abaixo temos uma função que caso a saída seja diferente de 0 (Zero) ou seja de erros ele interrompe a execução.
- Já para o find deixei comentado uma opção caso deseja fazer a busca somente dentro de um diretório dos usuários. Logo abaixo dentro do for temos a execução do rsync para cada item da lista.
- E por ultimo criamos uma copia do arquivo de lista.
Nesta segunda parte do script já estamos com a lista de arquivos, vamos executar a remoção deles.
- Script 02: removerArquivos.sh
#!/bin/bash
set -x
# ./removerArquivos.sh
function error_check {
if [[ $? != 0 ]]; then
echo 'Erro no script!'
exit 1
fi
}
for remove in $(cat lista-arquivos.txt); do
rm -f $remove
error_check
done
Explicando o script acima:
Usando a lista gerada anteriormente para cada linha da lista vamos executar o rm -f.
Na terceira e ultima parte do script podemos usar para enviar os arquivos ao AWS S3.
Script 03: enviarArquivosS3.sh
#!/bin/bash
set -x
# ./enviarArquivosS3.sh
export BUCKET_NAME='nome-bucket'
function error_check {
if [[ $? != 0 ]]; then
echo 'Erro no script!'
exit 1
fi
}
aws s3 mv /novo-disco/home/ s3://$BUCKET_NAME/ --recursive
error_check
Explicando o script acima:
- A variável BUCKET_NAME deve conter o nome do bucket la no AWS S3 lembrando que as credenciais de um usuário com acesso a este bucket deve estar configurado no arquivos
/home/<usuario>/.aws/credentials
- Em
aws s3 mv
usamos para mover do disco de backup para o Bucket la na AWS.