Назад | Перейти на главную страницу

Удалите файлы старше X дней на удаленном сервере с помощью SCP / SFTP

Кто-нибудь знает какой-нибудь хороший способ удалить файлы на удаленном сервере старше X дней, используя только SCP / SFTP? Конечно, я могу написать сценарий на Perl и т. Д., Но я считаю, что это перебор.
Любой способ UNIX?
Один лайнер?
Отдельная утилита?

Спасибо

P.S. Задача - удалить какие-то устаревшие файлы резервных копий.

Конечно, я могу написать сценарий на Perl и т. Д., Но это перебор.

Для достижения желаемого эффекта вам не нужен сценарий - однострочный вариант подойдет, если у вас есть доступ к оболочке для отправки команды:

ssh user@host 'find /path/to/old_backups/* -mtime +7 -exec rm {} \;'

-mtime +7 соответствует файлам, созданным неделю назад с полуночи текущего дня.

Этот вопрос очень старый, но я все еще хотел добавить свое решение только для bash, поскольку я просто искал его, когда пришел сюда. Команда grep tar в команде листинга предназначена только для моей собственной цели, чтобы вывести список только файлов tar, конечно, может быть адаптирована.

RESULT=`echo "ls -t path/to/old_backups/" | sftp -i ~/.ssh/your_ssh_key user@server.de | grep tar`

i=0
max=7
while read -r line; do
    (( i++ ))
    if (( i > max )); then
        echo "DELETE $i...$line"
        echo "rm $line" | sftp -i ~/.ssh/your_ssh_key user@server.de
    fi
done <<< "$RESULT"

Это удаляет все файлы tar в данном каталоге, кроме последних 7. Дата не учитывается, но если у вас есть только одна резервная копия в день, этого достаточно.

Если вы настаиваете на SCP / SFTP, вы можете перечислить файлы, проанализировать их с помощью простого скрипта и удалить старые файлы резервных копий.

Переключатель "-b" пакетного режима должен вам помочь. Он читает команды sftp из файла. http://linux.die.net/man/1/sftp