Bash ftp备份并仅保留一些存档

问题描述 投票:0回答:1

美好的一天。我有一个重要的问题。我需要知道如何删除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
string bash parsing ftp
1个回答
1
投票

编辑此行:

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}')

并且您将在变量中使用文件名

© www.soinside.com 2019 - 2024. All rights reserved.