【问题标题】:Cron job full path: Still getting broken pipe errorsCron 作业完整路径:仍然出现损坏的管道错误
【发布时间】:2012-06-12 02:26:15
【问题描述】:

我知道我做错了不包括正确的完整文件路径信息,但经过数小时的 tweeking 我仍然收到sh: 2012-06-08-01-25.sql.gz: Permission denied mysqldump: Got errno 32 on write 错误。这是我的脚本:

$dbhost = "DATABASE HOST";
$dbuser = "DATABSE USER";
$dbpass = 'PASSWORD';
$dbname = "DATABASE NAME";

$backupfile = '/home/12345/data/backup/'.date("Y-m-dTH:i") . '.sql.gz';
system("mysqldump -h $dbhost -u $dbuser --password='$dbpass' $dbname | gzip > $backupfile");

$backupfile = $backupfile;

# To S3
require('/home/12345/data/backup/S3.php');  

if (!defined('awsAccessKey')) define('awsAccessKey', 'ACCESS KEY');  
if (!defined('awsSecretKey')) define('awsSecretKey', 'SECRET KEY');  

$s3 = new S3(awsAccessKey, awsSecretKey);

if (!$s3->putObjectFile($backupfile, "BUCKET", 'db-backup/'.$backupfile, S3::ACL_PRIVATE)) {  
    die("104");
}
system("rm $backupfile");

该脚本使用 gzip 和 mysqldump 压缩我的数据库,然后将此 ZIP 上传到 S3 存储桶上的安全加密文件夹。

【问题讨论】:

    标签: php bash unix ssh cron


    【解决方案1】:

    您似乎没有写入 /home/12345/data/backup 的权限。通过将文件夹的所有者更改为 Apache 用户并为其他所有人读取/执行,确保权限允许 Apache 运行的用户写入指定目录:

    chown {*APACHE-USER*} /home/12345/data/backup
    chmod 755 /home/12345/data/backup
    

    【讨论】:

    • 不!不要将权限设置为 777!我想不出在任何情况下这是正确的做法!
    • 他正在有效地使用这个目录作为临时目录上传到 S3。我有点冒昧,但我认为它会在成功上传后定期清除。但是,您是对的,应该根据应该写入目录的对象/内容来设置最安全的设置权限。我已经更新了我的答案以反映更合适的方法。
    • 更改目录的权限也没有帮助?
    【解决方案2】:

    这是关键:

    sh: 2012-06-08-01-25.sql.gz: Permission denied
    

    chown/chgrp 到具有写入权限的用户/组和/或使用 chmod 修改权限,以便执行用户/组可以读取/写入目标目录。

    管道因无法写入文件而损坏,权限被拒绝。

    【讨论】:

    • 那将是 chown 而不是 chmod
    • 根据您的舒适程度和对操作系统的了解,是否会起作用,尽管大多数人会认为 chown 更安全。
    • 它们做了两件不同的事情,并且有必要将它们中的每一个用于其适当的功能。没有重叠。我建议你去阅读他们的man 页面。
    • 如果尝试写入该目录的用户已经是组的成员,但权限不允许组 w,为什么要将目录分配给新用户/组?例如,多个用户需要写入同一个目录,您将他们分组并授予组写入权限...
    • 我同意。我更新了我的回复以反映更新的术语。
    猜你喜欢
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 2016-07-21
    • 2014-04-28
    • 2011-02-12
    • 1970-01-01
    • 2015-07-13
    • 2021-01-17
    相关资源
    最近更新 更多