美好的一天。我有一个重要的问题。我需要知道如何删除ftp服务器上的第一个文件。我的ftp服务器上有5个备份,称为date.filename.tar.bz2
。我正在制作第六个存档,但我需要ftp-server仅保留5个最后备份。我可以做这样的事情
delfile=$(echo ls *.tar.bz2 | lftp $user:$pass@$host:/ | head -n1)
但是我得到一个字符串:-rw------- 1 1001 1001 0 dec 14 hr:min filenmae.tar.bz2
而且我不能只输入delete $delfile
来删除文件我需要解析字符串并仅获取filename.tar.bz2
。请帮忙,该字符串如何解析?我发布了自己的脚本以取得很好的理解
#!/bin/bash
HOST=10.10.x.x
USER=ftpuser
PASSWORD=ftpuserpass
TEMP="/tmp/backup"
if [ ! -d "$TEMP" ]; then
mkdir $TEMP
fi
fname="$(basename -- $1)"
tar -cvjf $TEMP/$today.$fname.tar.bz2 $1
x=$(echo ls *.tar.bz2 | lftp $USER:$PASSWORD@$HOST:/ | wc -l)
if [ "$x" -ge 5 ]; then
#here is a trouble
#i need to do something like that
#delfile=$(echo ls *.tar.bz2 | lftp $USER:$PASSWORD@$HOST:/ | head -n1)
#ftp -inv $HOST <<EOF
#user $USER $PASSWORD
#delete $delfile
#bye
#EOF
#but delfile gets a string -rw------- 1 1001 1001 0 Dec 14 17:55 test.tar.bz2
#and i don't now how to make it get just test.tar.bz2
else
ftp -inv $HOST <<EOF
user $USER $PASSWORD
lcd $TEMP
mput *.tar.bz2
bye
EOF
cd $TEMP
rm *.tar.bz2
fi
编辑此行:
delfile=$(echo ls *.tar.bz2 | lftp $USER:$PASSWORD@$HOST:/ | head -n1)
要这样:
delfile=$(echo ls *.tar.bz2 | lftp $USER:$PASSWORD@$HOST:/ | head -n1|awk '{print $NF}')
并且您将在变量中使用文件名