Bash ftp 备份并保留一些档案
Bash ftp backup and keep just some archives
美好的一天。我有一个重要的问题。我需要知道如何删除 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
。
请帮忙,如何解析这个字符串?
我post我的脚本好理解
#!/bin/bash
HOST=10.10.x.x
USER=ftpuser
PASSWORD=ftpuserpass
TEMP="/tmp/backup"
if [ ! -d "$TEMP" ]; then
mkdir $TEMP
fi
fname="$(basename -- )"
tar -cvjf $TEMP/$today.$fname.tar.bz2
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}')
您将在变量中包含文件名
美好的一天。我有一个重要的问题。我需要知道如何删除 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
。
请帮忙,如何解析这个字符串?
我post我的脚本好理解
#!/bin/bash
HOST=10.10.x.x
USER=ftpuser
PASSWORD=ftpuserpass
TEMP="/tmp/backup"
if [ ! -d "$TEMP" ]; then
mkdir $TEMP
fi
fname="$(basename -- )"
tar -cvjf $TEMP/$today.$fname.tar.bz2
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}')
您将在变量中包含文件名