-2

大家好,我已经使用此代码生成备份文件,在目录中查找最新文件并使用 ip 将该最新文件复制到服务器。问题是,它没有将最新文件复制到服务器。如何执行此操作?

这是我使用的代码:

#!/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
4

2 回答 2

0

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

LATESTFILE=$(ls -t1 | head -n1)
于 2013-03-16T06:12:01.943 回答
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

希望这可以帮助

于 2013-03-16T06:14:51.617 回答