我有一个简单的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
答案 0 :(得分:2)
确保以下(初步检查)
确保您有足够的可用磁盘空间。
为mysqldump增加max_allowed_packet
运行cron的用户权限(检查所有内容chown
,chgrp
,chmod
)
确保gzip实际上正在运行
确保您拥有filename="backup.tar"
尝试使用完整路径信息,例如(/var/lib/mysql/backups/shop2.gz)
最后使用touch
首先创建文件,然后使用cron运行脚本
答案 1 :(得分:0)
我遇到了同样的问题,并且已经将文件chmodded到777.通过放入gzip文件的完整路径解决了这个问题。