Atualmente, estou trabalhando em um script de backup para fazer login em meu servidor de produção e extrair os dumps SQL mais recentes para meu servidor temporário. Não tenho problemas em extrair os dumps SQL, mas tenho problemas ao mover os últimos arquivos de backup para uma pasta temporária.
Meu usuário de script de backup:mysqlBackupUser
Estou usando o diretório inicial deste usuário como local para este script e para armazenar os backups. A estrutura da pasta é:
/home
|- mysqlBackupUser
|- .ssh
|- backups
|- bin
Meu script entra bin
e os backups são baixados no backups
diretório
O backups
diretório também possui outras pastas para organizar o servidor e tipo de backups. Ou seja:
/backups
|-mysql
|- production1
|- production2
|-misc
|- production1
|- production2
Até agora está tudo bem e funcionando conforme o esperado. O problema é quando estou (não limitado a):
/home/mysqlBackupUser/backups/mysql/production1/
quando eu crio o diretório tmp nomeado _lastBackUp
e tento mover meus backups anteriores para ele, recebo:
find: Failed to change directory: Permission denied
Meu código para isso é:
local tmpBackUpDir="${LOCAL_LOCATION_DIR}/_lastBackUp/"
# Ensure the directory exist
mkdir -p "${tmpBackUpDir}"
# move any previous files to bak
find "${LOCAL_LOCATION_DIR}/" -type f -exec mv -t "${LOCAL_BAKUP_DIR}" {} \+;;
Para maior clareza:
LOCAL_LOCATION_DIR = /home/mysqlBackupUser/backups/mysql/production1
tmpBackUpDir = /home/mysqlBackupUser/backups/mysql/production1/_lastBackUp/
Para entender como o script está sendo usado: Atualmente estou como meu usuário e estou
sudo su mysqlBackupUser
Ser como o usuário. Não tenho certeza se esse é o problema e não posso testar fazendo login como este usuário. O script será executado pelo cron e atuará como este usuário (as chaves são configuradas para facilitar a automação para este usuário) para executar o processo, então não tenho certeza se esse é realmente o problema.
Eu verifiquei que a propriedade e permissão de todas as pastas, até mesmo a _lastBackUp
que pertence a mysqlBackupUser
. Até configurei _lastBackUp
para 777 para teste e ainda tive permissões negadas...
Meu erro completo é:
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: failed to restore initial working directory: Permission denied
Cada um find: Failed to change directory: Permission denied
é para cada arquivo para o qual estou tentando mover_lastBackUp
Obrigado por qualquer visão sobre isso.
Responder1
Parece que o erro é não ter permissão paramudardiretório.
- verifique se o usuário possui pelo menos
r-x
cada pasta que leva ao caminho de onde o script é executado. - verifique se o usuário possui pelo menos
rwx
a pasta + arquivos onde estão localizados os backups. - verifique se o usuário possui um shell de login
$HOME
e$PATH
. Se sim, faça o scriptcd
para algum local relevante antes de iniciar a operação. Caso contrário, defina todos os comandos e locais usandoabsolutocaminhos.
Não consigo encontrar outras causas possíveis.
Responder2
Se o mkdir estiver funcionando, o que parece estar, se você executar um ls -al no diretório pai, quem é o proprietário dos diretórios? Parece-me que algo está errado com as permissões em algum momento.