【问题标题】:Shell script Permission denied mysqldump: Got errno 32 on write only in CronShell 脚本权限被拒绝 mysqldump:仅在 Cron 中写入时出现 errno 32
【发布时间】:2015-08-08 04:42:19
【问题描述】:

我有一个简单的 sh 文件来备份一些 MySql 数据库并将它们 FTP 到外部服务器。 如果从命令行调用 shell 脚本可以正常工作,但在安排为 cron 作业时不起作用。

所有文件都是 chmdod 777

这是脚本

mysqldump -uuser-ppassword databasename | gzip > shop1.gz
mysqldump -uuser -password databasename | gzip > shop2.gz
mysqldump -uuser -ppassword databasename | gzip > timesheets.gz
mysqldump -uuser -ppassword databasename | gzip > library.gz 
tar -cvvf backup.tar *.gz

filename="backup.tar"
hostname="****"
username="****"
password="****"
ftp -un $hostname <<EOF
quote USER $username
quote PASS $password
passive
cd db_backups
binary
put $filename
quit
EOF

我得到了错误:

httpdocs/dump/db_bck.sh: line 1: shop1.gz: Permission denied
mysqldump: Got errno 32 on write
httpdocs/dump/db_bck.sh: line 2: shop2.gz: Permission denied
mysqldump: Got errno 32 on write
httpdocs/dump/db_bck.sh: line 3: timesheets.gz: Permission denied
mysqldump: Got errno 32 on write
httpdocs/dump/db_bck.sh: line 4: library.gz: Permission denied
mysqldump: Got errno 32 on write
tar: backup.tar: Cannot open: Permission denied
tar: Error is not recoverable: exiting now
ftp: u: unknown option

这是最终的工作脚本,以防万一对其他人有用:

mysqldump -u -p mydb1 | gzip > httpdocs/dump/mydb1.gz
mysqldump -u -p mydb2 | gzip > httpdocs/dump/mydb2.gz
mysqldump -u -p mydb3 | gzip > httpdocs/dump/mydb3.gz
mysqldump -u -p mydb4 | gzip > httpdocs/dump/mydb4.gz 


cd /var/www/vhosts/mydomain.com/httpdocs/dump
filename="*.gz"
hostname="ftphostname"
username="ftpusernam"
password="ftppassword"
/usr/kerberos/bin/ftp -un $hostname <<EOF
quote USER $username
quote PASS $password
passive
cd db_backups
binary
prompt
mput $filename
quit
EOF

【问题讨论】:

标签: mysql bash shell crontab


【解决方案1】:

我也遇到了同样的问题,并且已经将文件修改为 777。通过输入 gzip 文件的完整路径来解决它。

【讨论】:

    【解决方案2】:

    确保以下(初步检查)

    1. 确保您有足够的可用磁盘空间。

    2. 为 mysqldump 增加 max_allowed_packet

    3. 运行 cron 的用户的权限(检查所有内容 chownchgrpchmod

    4. 确保 gzip 确实在工作

    5. 确保您拥有filename="backup.tar"的写入权限

    6. 尝试使用完整路径信息,例如 (/var/lib/mysql/backups/shop2.gz)

    7. 最后使用touch先创建文件,然后使用cron运行脚本

    【讨论】:

    • 很好的检查清单。我会尽快按照您的建议进行操作,我会尽快回复您。谢谢!
    • 这是一个路径问题。感谢您的帮助。
    猜你喜欢
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多