현재 프로덕션 서버에 로그인하고 최신 SQL 덤프를 스테이징 서버로 가져오기 위한 백업 스크립트를 작업 중입니다. SQL 덤프를 가져오는 데는 문제가 없지만 마지막 백업 파일을 임시 폴더로 이동하는 데 문제가 있습니다.
내 백업 스크립트 사용자:mysqlBackupUser
저는 이 사용자의 홈 디렉터리를 이 스크립트의 위치로 사용하고 백업을 저장하고 있습니다. 폴더 구조는 다음과 같습니다.
/home
|- mysqlBackupUser
|- .ssh
|- backups
|- bin
내 스크립트가 저장 bin
되고 백업이 backups
디렉토리 에 다운로드됩니다.
디렉토리 backups
에는 서버와 백업 유형을 구성하는 다른 폴더도 있습니다. 즉:
/backups
|-mysql
|- production1
|- production2
|-misc
|- production1
|- production2
지금까지는 모든 것이 정상이며 예상대로 작동합니다. 문제는 내가 다음 상황에 있을 때입니다(이에 국한되지 않음).
/home/mysqlBackupUser/backups/mysql/production1/
이름이 지정된 tmp 디렉토리를 생성 _lastBackUp
하고 이전 백업을 이 디렉토리로 옮기려고 하면 다음과 같은 결과가 나타납니다.
find: Failed to change directory: Permission denied
이에 대한 내 코드는 다음과 같습니다
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}" {} \+;;
명확성을 위해:
LOCAL_LOCATION_DIR = /home/mysqlBackupUser/backups/mysql/production1
tmpBackUpDir = /home/mysqlBackupUser/backups/mysql/production1/_lastBackUp/
스크립트가 어떻게 사용되는지 이해하려면: 현재 나는 내 사용자로 로그인되어 있습니다.
sudo su mysqlBackupUser
사용자가 되려면. 이것이 문제인지 확실하지 않으며 이 사용자로 로그인하여 테스트할 수 없습니다. 스크립트는 cron에 의해 실행되며 이 사용자(이 사용자에 대한 자동화를 쉽게 하기 위해 키가 설정됨) 역할을 하여 프로세스를 수행하므로 이것이 실제로 문제인지는 확실하지 않습니다.
_lastBackUp
모든 폴더의 소유권과 권한이 에 있음 을 확인했습니다 mysqlBackupUser
. 테스트를 위해 777로 설정했는데도 _lastBackUp
여전히 권한이 거부되었습니다...
내 완전한 오류는 다음과 같습니다
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
각각은 find: Failed to change directory: Permission denied
이동하려는 각 파일에 대한 것입니다._lastBackUp
이에 대한 통찰력을 제공해 주셔서 감사합니다.
답변1
권한이 없다는 오류인 것 같습니다.변화예배 규칙서.
r-x
사용자가 스크립트가 실행되는 경로로 이어지는 각 폴더를 최소한 가지고 있는지 확인하십시오 .- 사용자가 최소한
rwx
백업이 있는 폴더 + 파일을 가지고 있는지 확인하십시오. - 사용자에게 로그인 쉘이 있는지 확인
$HOME
하고$PATH
. 그렇다면cd
작업을 시작하기 전에 스크립트를 관련 위치에 만드십시오. 그렇지 않은 경우 다음을 사용하여 모든 명령과 위치를 정의하십시오.순수한경로.
다른 가능한 원인을 생각해 낼 수 없습니다.
답변2
mkdir이 작동하는 경우 디렉토리의 소유자인 상위 디렉토리에 대해 ls -al을 실행하면 어떻게 될까요? 어딘가에서 권한에 문제가 발생하고 있는 것 같습니다.