Shell脚本找不到文件

时间:2014-02-04 12:43:43

标签: bash shell ftp backup

您好我正在尝试编写一个简单的shell脚本,用于在cronjob中通过FTP将网站文件的备份存档复制到远程服务器。

当我手动输入文件名时,下面的脚本有效,但是将日期和文件名指定为变量,它返回它无法找到" .tar.gz"好像它忽略了文件名的第一部分。

如果有人能告诉我哪里出错了,我将不胜感激。

#!/bin/sh
NOW=$(date +"%F")
FILE="$NOW_website_files.tar.gz"

# set the local backup dir
cd "/home/localserver/backup_files/"

# login to remote server

ftp -n "**HOST HIDDEN**" <<END
user "**USER HIDDEN**" "**PASSWORD HIDDEN**"
cd "/backup_files"
put $FILE
quit
END

2 个答案:

答案 0 :(得分:0)

这是因为它正在寻找一个不存在的变量名NOW_website_files,因此生成的文件名的计算结果为.tar.gz

要解决它,请执行:

#!/bin/sh
NOW=$(date +"%F")
FILE="${NOW}_website_files.tar.gz"
       ^   ^

而不是

FILE="$NOW_website_files.tar.gz"

这样它会将变量$NEW连接到_website_files.tar.gz文本。

答案 1 :(得分:0)

你可以这样做:

FILE=$(date +"%F_website_files.tar.gz")

而不是:

NOW=$(date +"%F")
FILE="$NOW_website_files.tar.gz"

重要

顺便说一句,考虑在你的FTP脚本中添加“bi”,因为你是一个二进制文件,你不希望在二进制文件中进行CR / LF转换......