我尝试创建一个脚本,该脚本使用lftp删除备份目录中最近的三个文件以外的所有旧文件。
我尝试对ls -1tr
进行此操作,它们以升序返回所有文件,而在我执行head -$NB_BACKUP_TO_RM
之后($ NB_BACKUP_TO_RM是我要删除的文件数列表),这两个命令将返回正确的文件。
此后,我想删除所有这些文件,因此我执行了xargs rm --
,但Bash返回该文件不存在...我认为此命令未运行到远程目录中,但是在本地目录,我不知道该如何删除(返回列表中的)此文件。
这是完整的代码:
MAX_BACKUP=3
NB_BACKUP=$(lftp -e "ls -1tr $REMOTE_DIR/full_backup_ftp* | wc -l ; quit" -u $USER,$PASSWORD $HOST)
if (( $NB_BACKUP > $MAX_BACKUP ))
then
NB_BACKUP_TO_RM=$(($NB_BACKUP-$MAX_BACKUP))
REMOVE=$(lftp -e "ls -1tr $REMOTE_DIR/full_backup_ftp* | head -$NB_BACKUP_TO_RM | xargs rm -- ; quit" -u $USER,$PASSWORD $HOST)
echo $REMOVE
fi
您对这个问题有想法吗?如何删除列表中的文件(在ls -1tr $REMOTE_DIR/full_backup_ftp*
和head -$NB_BACKUP_TO_RM
之后)
感谢您的帮助