barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

вторник, 28 августа 2012 г.

Debian: скачивание папок по ftp

Возникла необходимость бэкапить несколько папок с одного сервера на другой, получая их по ftp (на обоих серверах - Debian). Написать соответствующий bash-скрипт не составило труда, возник лишь вопрос с выбором утилиты для собственно скачки папок по ftp. Первой идеей был wget, умеющий и работать с ftp, и рекурсивно выкачивать директории:
wget -r "ftp://user@password:host"
Но тут камнем преткновения стал русский язык в именах скачиваемых файлов и папок: независимо от наличия / отсутствия поддержки iri папки и файлы с русскими именами успешно скачивались, вот только сохранялись с побитыми именами (приведен фрагмент лога wget`а):
--2012-08-27 11:24:14--  ftp://login:passorw@host/dir/%D0%BD%D0%B5%D1%82%20%D0%B2%20%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B5/file.doc
           => « host/dir/не\321%82 в \321%81пи\321%81ке/ file.doc»
(в оригинале должно было быть "нет в списке"), т.е. часть русских символов оставалась URL-кодированной. При этом на сервере используется UTF-8, и другие клиенты скачивают файлы без проблем.
В результате от wget я отказался в пользу lftp. В нем скачка директории выполняется так:
lftp -e 'mirror -e dir /path/to/download_dir/ bye;' -u user,password host
Здесь "dir" - папка на ftp-сервере,  /path/to/download_dir/ - путь для сохранения скачанной папки.

2 комментария:

  1. Сервера без SSH? Подошло бы scp, я думаю.
    Ну или на крайняк использовать протокол sftp. ftp всетаки небезопасен.

    ОтветитьУдалить
    Ответы
    1. Оба сервера в корпоративной локалке, поэтому вопроса о безопасности не стояло. Да и ftp-сервер там и так работал для других целей.
      PS И по-моему открывать на серваке ssh только ради скачки файлов тоже не очень безопасный подход. FTPS - вполне вариант.

      Удалить