我已经制作了bash脚本,它将备份文件并将其发送到远程机器文件,但是ftp无法将其放到提到的目录中 当ftp尝试复制文件时,问题就在于此。 这是我的剧本:
#!/bin/bash
#BACKUP ROOT DIRECTORIES
DESTINATION="/backup";
HOST=localhost
USER=qwerty
PASS=qwerty
COUNT=$(cd /backup/ && ls -l | wc -l);
echo $COUNT;
DIR="/dev /sys /etc /www /var /rom /root /dev /overlay /bin /sbin /nebero /lib /usr";
DIR="/root/pen";
DIR_1="/dev /sys /etc /www /var /rom /root /dev /overlay /bin /sbin /nebero /lib /usr /mnt";
DIR_1="/root/pen";
if [ "$1" = "FULL_BACKUP" ]
then
tar cvf $DESTINATION/full_backup_`date +%d-%m-%y_%H:%M`.tar `echo $DIR_1` >>/dev/null;
if [ $COUNT -eq 1 ]
then
NEW=$(ls -t /*back*/ | head -n2);
else
NEW=$(ls -t /*back*/ | head -n2 | sed '2!d');
fi
elif [ "$1" = "CONF_BACKUP" ]
then
tar cvf $DESTINATION/conf_backup_`date +%d-%m-%y_%H:%M`.tar `echo $DIR` >>/dev/null;
NEW=$(ls -t /*back*/ | head -n2 | sed '1!d');
else
echo "Please provide an argument";
exit
fi
FILE=$NEW
ftp -in $HOST <<EOF
user $USER $PASS
pwd
cd /rav
put $FILE
bye
EOF
答案 0 :(得分:0)
首先,看起来所有ls
命令的目的是找到刚刚创建的文件。如果您只是在调用tar
之前将文件名保存到变量中,则可以跳过所有这些:
FILENAME=full_backup_`date +%d-%m-%y_%H:%M`.tar
然后在$DESTINATION/$FILENAME
命令中使用tar
,在$FILENAME
命令中使用ftp
。
关于上传失败,您确定本地位于正确的目录中吗?
这些是用于更改目录的FTP命令:
cd
:更改远程计算机上的目录lcd
:更改本地计算机上的工作目录在执行put
之前确保两者都正确。