Я пытаюсь создать сценарий, который удаляет все старые файлы, кроме трех последних файлов в моем каталоге резервных копий с помощью 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
)
Спасибо за вашу помощь