Shell脚本Permission denied mysqldump:只在Cron中写入错误32

时间:2015-05-26 13:15:59

标签: mysql bash shell crontab

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

所有文件都是chmdod 777

这是脚本

 if( Cache::has( $key ) ) 
 { 
     $content=Cache::get( $key );
     return response($content);
}

我收到了错误:

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

2 个答案:

答案 0 :(得分:2)

确保以下(初步检查)

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

  2. 为mysqldump增加max_allowed_packet

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

  4. 确保gzip实际上正在运行

  5. 确保您拥有filename="backup.tar"

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

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

答案 1 :(得分:0)

我遇到了同样的问题,并且已经将文件chmodded到777.通过放入gzip文件的完整路径解决了这个问题。