Je travaille actuellement sur un script de sauvegarde pour me connecter à mon serveur de production et extraire les dernières sauvegardes SQL sur mon serveur de transfert. Je n'ai aucun problème à extraire les images SQL, mais le problème est de déplacer les derniers fichiers de sauvegarde dans un dossier temporaire.
Mon utilisateur de script de sauvegarde: mysqlBackupUser
J'utilise le répertoire personnel de cet utilisateur comme emplacement pour ce script et pour stocker les sauvegardes. La structure du dossier est:
/home
|- mysqlBackupUser
|- .ssh
|- backups
|- bin
Mon script se trouve dans bin
et les sauvegardes sont téléchargées dans le backups
répertoire
Le backups
répertoire contient également d'autres dossiers pour organiser le serveur et le type des sauvegardes. C'EST À DIRE:
/backups
|-mysql
|- production1
|- production2
|-misc
|- production1
|- production2
Jusqu'à présent, tout va bien et fonctionne comme prévu. La question est quand je suis dans (pas limité à):
/home/mysqlBackupUser/backups/mysql/production1/
Lorsque je crée le répertoire tmp nommé _lastBackUp
et que j'y déplace les sauvegardes précédentes, je reçois:
find: Failed to change directory: Permission denied
Mon code pour cela est:
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}" {} \+;;
Pour plus de clarté:
LOCAL_LOCATION_DIR = /home/mysqlBackupUser/backups/mysql/production1
tmpBackUpDir = /home/mysqlBackupUser/backups/mysql/production1/_lastBackUp/
Pour comprendre comment le script est utilisé: Actuellement, je suis comme utilisateur et je suis
sudo su mysqlBackupUser
Être comme l'utilisateur. Je ne sais pas si c'est le problème et je ne peux pas tester en me connectant en tant qu'utilisateur. Le script sera exécuté par cron et agira comme cet utilisateur (les clés sont configurées pour faciliter l'automatisation de cet utilisateur) pour effectuer le processus, donc je ne suis pas certain qu'il s'agisse bien du problème.
J'ai vérifié que la propriété et la permission de tous les dossiers, même ceux _lastBackUp
-ci, appartiennent à mysqlBackupUser
. J'ai même mis _lastBackUp
à 777 pour les tests et les autorisations ont toujours été refusées ...
Mon erreur complète est:
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
Chacun find: Failed to change directory: Permission denied
est pour chaque fichier que j'essaie de déplacer_lastBackUp
Merci pour tout aperçu de cela.
la source
sudo su mysqlBackupUser
il apparaît, il a conservé l'utilisateur dans mon répertoire d'origine. C'est bizarre de télécharger les fichiers là où ils appartiennent et le seul problème était de créer le répertoire tmp, d'autant plus que j'utilise un chemin absolu. De toute façon, cela fonctionne maintenant grâce à votre dernière suggestion! Merci!Si mkdir fonctionne, ce qui semble être le cas, si vous exécutez un ls -al sur le répertoire parent, qui est le propriétaire des répertoires? Il me semble que quelque chose ne va pas avec les autorisations quelque part dans la suite.
la source
drwxrwxrwx 2 mysqlBackupUser mysqlBackupUser 4096 Jul 21 16:24 _lastBackUp