nixp.ru v3.0

19 октября 2017,
четверг,
01:24:19 MSK

DevOps с компанией «Флант»
Ruslan413 написал 18 июля 2009 года в 15:50 (1738 просмотров) Ведет себя неопределенно; открыл 8 тем в форуме, оставил 15 комментариев на сайте.

Добрый день!

Такой вопрос:

Через консольный ftp-клиент lftp подключаюсь к определенному адресу. В корне несколько каталогов, с множеством подкаталогов. Мне нужно найти в этих подкаталогах файлы с определенным расширением (например, rar-архивы), и скачать их себе на винт.

Без ftp я задачу решил (локально делаю выборку в директории, и копирую), вот команда:

find /ftp/stat/*/?.rar -exec cp {} /home/debian5/backup \;

Но при подключении по ftp возникают проблемы.

Уже подключившись, даю такую команду:

find /content/*/ *.htm -exec mget {} -O /home/ruslan413/ \;

и получаю что-то вроде

find: Ошибка доступа: 550 /content/mods/search/*.htm: No such file or directory

find: Ошибка доступа: 550 /content/mods/search/-exec: No such file or directory

find: Ошибка доступа: 550 /content/mods/search/mget: No such file or directory

find: Ошибка доступа: 550 /content/mods/search/{}: No such file or directory

find: Ошибка доступа: 550 /content/mods/search/-O: No such file or directory

Видимо -exec в lftp не работает, cp тоже. Подскажите каким образом можно решить данную задачу?

Заранее спасибо!

Дмитрий Шурупов

Дело в том, что да, find в lftp — совсем не тот, что классическая UNIX-утилита.

Поскольку поиск у вас проводится довольно простой, рекомендую попробовать mget. Примерно так:

cd /home/ruslan413

lftp ftp.server.hostname

mget /content/*/*.htm

(mget понимает «*», так что все соответствующие файлы закачает в текущий каталог — для и делается «cd» перед lftp)

Ruslan413

Спасибо! Еще решил это командой

mirror -i rar content /home/ruslan413/mirror

Только вот в content еще много подкаталогов, и если они пустые, либо файлы в них не подходят по маске, заданной -i/, то копируются и нужные мне файлы, и эти каталоги, пустые.

mget /content/*/*.htm — конечно эффективнее в данном случае. Еще раз спасибо!

Ruslan413

Еще один вопрос. Скачку наладил, теперь по аналогии пытаюсь удалить уже скачанные файлы,

но не поулчается, получаю ошибку 550 — недостаточно прав.

Удаляю командой rm -r /content/*/*.htm

CHMOD у каталогов я менять не могу. Но файлы удалить получается, если я захожу в сам каталог где лежит файл, и удаляю его rm.

Посоветуйте, как-нибудь можно массовое удаление сделать?