
공유 호스트에서 데이터베이스를 백업하는 스크립트를 작성했습니다. 스크립트는 다음과 같습니다.
mysqldump --databases [db1] [db2] | openssl aes-256-cbc -a -salt -pass file:/home/[user]/etc/.keys/.backup_key | gzip > /home/[user]/backup/$(date +%Y:%m:%d:%H:%M:%S).gz
데이터베이스 자격 증명은 /home/[user]의 .cnf에 저장되고, 암호화 키는 스크립트에 표시된 키 파일에 저장됩니다. SSH를 통해 이 스크립트를 실행하면 모든 것이 올바르게 작동하고 백업 파일이 생성됩니다. 그러나 매일 맨 위에 실행되도록 설정된 cronjob에서는 파일이 생성되지 않습니다.
어떤 아이디어가 있나요?
많은 감사를 드립니다.
답변1
다음을 사용하여 올바른 사용자 계정으로 크론 작업을 생성하십시오.
crontab -u <username> -e
또한 %를 '\'로 이스케이프 처리하세요.
mysqldump --databases [db1] [db2] | openssl aes-256-cbc -a -salt -pass file:/home/[user]/etc/.keys/.backup_key | gzip > /home/[user]/backup/$(date +\%Y:\%m:\%d:\%H:\%M:\%S).gz
답변2
내가 해결한 해결책은 명령 시작 부분에 추가하는 것이었습니다: cd /home/[user]/ && {rest of command} as /home/[user]/는 mysql 자격 증명이 mysqldump가 있는 .cnf 파일에 보관된 곳입니다. 덤프에 필요합니다. 나는 또한 동시에 '%'를 이스케이프 처리했기 때문에 아마도 도움이 될 것입니다. 탈출 팁을 제공한 @alex-atkinson에게 감사드립니다.