在简单的Bash重定向中出现"没有这样的文件或目录"

9

这是我的一些代码:

gzip -c $path > /var/www/wiki/backup/$now/$file.gz

我正在对$path(目录路径)的内容进行gzip压缩,然后将压缩文件发送到/var/www/wiki/backup/$now/$file.gz。其中$now包含一个目录名,$file是我想要写入压缩文件的名称。
然而,在运行程序时,我遇到了这个错误:
backup.sh: line 20: /var/www/wiki/backup/Sunday/extensions.gz: No such file or directory
                                         ^$now    ^$file

(第20行是上面给出的行)

为什么程序会崩溃?我知道Sunday/extensions.gz不存在(虽然Sunday存在),这就是为什么我要求你写入它的原因!

完整的程序代码:

#!/bin/bash
now=$(date +"%A") mkdir -p /var/www/wiki/backups/$now
databases=(bmshared brickimedia_meta brickimedia_en brickimedia_customs) locations=("/var/www/wiki/skins" "/var/www/wiki/images" "/var/www/wiki/")
for db in ${databases[*]} do #带有密码和shoodle的命令 : done for path in ${locations[*]} do #echo "" > var/www/wiki/backup/$now/$file.gz file=`echo $path | cut -d/ -f5` echo $path gzip -c $path > /var/www/wiki/backup/$now/$file.gz done

3
路径 /var/..../Sunday 存在吗? - suspectus
@suspectus 是的。(我在文件顶部创建了它!)(这有关系吗?) - ACarter
我的阅读速度有时不太合适! - suspectus
1
你能发布更多的脚本吗?只有当gzip执行时,如果/var/www/wiki/backup/Sunday/不存在,那么这个错误才有意义。 - chepner
可能gzip每天都会运行 - 但星期天可能不会运行? - suspectus
@suspectus 嗯,如果你的意思是我打算每天运行这个脚本,那么是的。 - ACarter
2个回答

7
创建的目录是备份,gzip用于备份
mkdir -p /var/www/wiki/backups/$now

gzip -c $path > /var/www/wiki/backup/$now/$file.gz

1
这个答案真的帮了我...结果发现我也打错了! - Jordan

1
您的一个位置是“/var/www/wiki/”。然后您有
file=`echo $path | cut -d/ -f5`
gzip -c $path > /var/www/wiki/backup/$now/$file.gz

由于$file包含空字符串,您正在尝试写入/var/www/wiki/backup/Sunday/.gz。 这是一个问题,但不是您报告的错误。

当我尝试gzip一个目录时,我会收到这个错误

$ gzip -c ./subdir/ > subdir.gz
gzip: ./subdir/ is a directory -- ignored

这是一个问题,但不是您报告的错误。

@suspectus解决了您报告的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接