您好我正在尝试编写一个简单的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
答案 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转换......