-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

You forgot to enclose the command that gets the last file:

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 に答える