如何使用bash脚本将最新文件从本地机器复制到服务器?

时间:2013-03-16 05:37:55

标签: linux bash shell

大家好我已经使用这段代码生成备份文件,找到目录中的最新文件,并使用ip将最新文件复制到服务器。问题是,它没有将最新文件复制到server.how这样做?

这是我用过的代码:

#!/bin/sh
#
#Defines our output file

OUTPUTDIR=/home/backup
OUTPUT=$OUTPUTDIR/backup-of-$(date +%d-%m-%Y).zip
BACKUPDIR="/home/user/Desktop/backup/"
LATESTFILE=ls -t1 | head -n1

#Display message about starting the backup
echo "Starting backup of directory $BACKUPDIR to file $OUTPUT"

#Start the backup
zip -r $OUTPUT $BACKUPDIR

#Checking the status of the last process:
if [ $? == 0 ]; then
#Display confirmation message
echo "The file:"
echo $OUTPUT
echo "was created as a backup"
else
#Display error message message
echo "There was a problem creating:"
echo $OUTPUT
echo "as a backup for:"
echo $BACKUPDIR
fi
echo "Please Enter The IP to save backup file"
read ip
echo "Connecting to" $ip. please wait...
scp $LATESTFILE user@$ip:/home/user/Desktop

2 个答案:

答案 0 :(得分:0)

您忘了附上获取最后一个文件的命令:

LATESTFILE=$(ls -t1 | head -n1)

答案 1 :(得分:0)

首先,我会更改以下行

LATESTFILE=ls -t1 | head -n1

LATESTFILE=`ls -t1 $OUTPUTDIR | head -n1`

并将该行移至请求IP之前。

“”表示执行“`”字符之间的内容并返回结果。如果您将该行留在顶部,则不会在目录中获取最新文件,因为它尚未创建。您还在当前目录上执行“ls”,不应该在写入备份文件的目录中吗?

还需要更改行

scp $LATESTFILE user@$ip:/home/user/Desktop

scp $OUTPUTDIR/$LATESTFILE user@$ip:/home/user/Desktop

希望这有帮助