Как я могу войти на FTP-сайт и удалить файлы, которые старше 7 дней? - PullRequest
0 голосов
/ 17 марта 2009

Мне нужен сценарий оболочки или Perl, который подключился бы к FTP-серверу и удалил все файлы, которые старше 7 дней.

ура

Ответы [ 3 ]

4 голосов
/ 17 марта 2009

Используйте модуль Net :: FTP для подключения к серверу ftp, как описано в документе CPAN. Для просмотра списков сайта вам может потребоваться объединить cwd / cdup для обработки каталогов (если, конечно, все файлы не находятся в корневом каталоге).

Чтобы узнать время изменения файла, используйте метод mdtm (FILE) , просто убедитесь, что это поддерживается на текущем сервере, вызвав

if( $ftp->feature( 'MDTM' ) ) {
   ...check modification time for file...
}

Если нет, то вы можете попробовать вызвать метод ' dir ', который выдаст вам списки в длинном формате, а затем извлечь информацию о дате из отдельных списков файлов, чтобы сравнить и удалить .

Для сравнения двух дат используйте модуль Date :: Calc . Метод ' Delta_Days ' должен давать вам количество дней между двумя датами; это можно использовать так же легко для любого из методов, указанных выше.

2 голосов
/ 17 марта 2009

В Perl вы можете использовать Net :: FTP ls, mdtm и команды удаления.

1 голос
/ 17 марта 2009

Если вам нужен скрипт оболочки, вам лучше запустить скрипт в crontab.

find /tmp -type f -mtime +7 -exec rm {} \;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...