我是脚本等新的相对论,但我正在尝试创建一个将在特定时间运行的脚本,该脚本将网络驱动器备份到非现场目的地。
我有手动工作的命令并且已经计算出时间,但是在尝试运行脚本时出现以下错误:
cd /volume1/Data
lftp -u [username],[password] [Destination]
Mirror [directoryname] -R -n
无法cd到volume1 / Data,找不到第3行镜像。
我要检查大小写和拼写。
嗯嗯
答案 0 :(得分:2)
Mirror
是一个lftp命令,脚本执行它就好像它是lftp进程结束后的shell命令,从未发生过,因为程序是交互式的,并等待输入。您需要做的是将lftp命令传递给lftp的标准输入:
cd /volume1/Data
echo "Mirror [directoryname] -R -n" | lftp -u [username],[password] [Destination]
或者,您可以使用lftp执行脚本的功能(查看-f
选项的手册)并将lftp命令分成单独的文件,然后将此文件传递给lftp,或查看-e
选项。它允许您将lftp命令内联到参数列表中。
答案 1 :(得分:2)
您需要将mirror
命令传递给lftp
:
cd /volume1/Data
user=joe
passwd=foo
host=myhost
dir=somedir
lftp -e "mirror $dir -R -n" -u $user,$passwd $host
答案 2 :(得分:2)
你也可以使用这样的“here here”:
#!/bin/sh
host=Destination
user=username
pass=password
folder=directoryname
cd /volume1/Data
lftp -u $user,$pass $host << EOF
mirror $folder -R -n
EOF