7z 无法从 putty 下的 shell 脚本运行
7z not working from shell script under putty
我想使用 7z 命令定期备份文件。
下面是testscript.sh:
#!/bin/bash
SRCDIR="/var/www/html/folder2beBackedup/"
DESTDIR="/var/www/html/backups/"
FILENAME=bk_test-$(date +%Y%m%d%H%M%S).7z
7za a $DESTDIR$FILENAME $SRCDIR
我运行 putty 中的脚本是这样的:
/bin/bash /var/www/html/testscript.sh
但是puttyreturns这个错误:"Cannot find 1 file"。参见
如果我通过 putty 直接 运行 7z 命令那么它可以工作,但是相同的命令不能工作testcript.sh.
我怀疑您的 SRCDIR
变量存在 copy/paste 错误,因为 WARNING: No more files
输出表明它正在尝试扫描没有名称的目录。简单地指定错误的变量名(因此没有目录)会导致它包含当前目录中的文件,所以它可能更危险,比如脚本中某处的无效字符。您是否尝试过使用 hexdump -C
查看脚本以确保任何地方都没有奇怪的杂散字符?
如果我使用名为 "/tmp/src/"^M
的源目录,其中 ^M
实际上是回车 return 字符(插入 vim 和 ^V ^M
),我得到的结果与您的屏幕截图所示相同。
以下是 the bash tag wiki 的摘录:
检查你的脚本或数据是否有DOS风格的行尾字符
使用 cat -v yourfile
或 echo "$yourvariable" | cat -v
。
DOS 回车 returns 将在每行后显示为 ^M
。
如果找到它们,请使用 dos2unix
(a.k.a。fromdos
)或 tr -d '\r'
删除它们
我想使用 7z 命令定期备份文件。
下面是testscript.sh:
#!/bin/bash
SRCDIR="/var/www/html/folder2beBackedup/"
DESTDIR="/var/www/html/backups/"
FILENAME=bk_test-$(date +%Y%m%d%H%M%S).7z
7za a $DESTDIR$FILENAME $SRCDIR
我运行 putty 中的脚本是这样的:
/bin/bash /var/www/html/testscript.sh
但是puttyreturns这个错误:"Cannot find 1 file"。参见
如果我通过 putty 直接 运行 7z 命令那么它可以工作,但是相同的命令不能工作testcript.sh.
我怀疑您的 SRCDIR
变量存在 copy/paste 错误,因为 WARNING: No more files
输出表明它正在尝试扫描没有名称的目录。简单地指定错误的变量名(因此没有目录)会导致它包含当前目录中的文件,所以它可能更危险,比如脚本中某处的无效字符。您是否尝试过使用 hexdump -C
查看脚本以确保任何地方都没有奇怪的杂散字符?
如果我使用名为 "/tmp/src/"^M
的源目录,其中 ^M
实际上是回车 return 字符(插入 vim 和 ^V ^M
),我得到的结果与您的屏幕截图所示相同。
以下是 the bash tag wiki 的摘录:
检查你的脚本或数据是否有DOS风格的行尾字符
使用
cat -v yourfile
或echo "$yourvariable" | cat -v
。DOS 回车 returns 将在每行后显示为
^M
。如果找到它们,请使用
dos2unix
(a.k.a。fromdos
)或tr -d '\r'
删除它们