Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Синхронизация локальной директории с ftp 
:(
    Опции темы
doctorltd
Дата 3.2.2009, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 3.2.2009

Репутация: нет
Всего: нет



Добрый день! Подскажите, пожалуйста, как правильно организовать синхронизацию локальных файлов с фтп директорией. На фтп файлы не меняются и не добавляются, поэтому копирование должно идти только в сторону фтп.

Пока что у меня получилось только найти те локальные файлы, которых нет на сервере и закачать их туда. А вот узнать размер удаленного файла не получается. При попытке вызвать size скрипт останавливается с ошибкой 550 SIZE not allowed in ASCI mode.
И еще было бы здорово сравнивать не только по размеру, но и по дате изменения. А аналога mtime для ftp я не нашел. 

Собственно, как проверить какие файлы нужно обновить на фтп-сервере?
PM MAIL   Вверх
_Viper_
Дата 3.2.2009, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 8.11.2006

Репутация: 10
Всего: 11



Перед получением размера явно перейди в бинарный режим FTP.sendcmd('TYPE I'). Тогда size нормально работает.

P.S. Было бы неплохо если б ты приводил простой код который демонстрирует проблему.
PM MAIL   Вверх
doctorltd
Дата 3.2.2009, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 3.2.2009

Репутация: нет
Всего: нет



Что-то не получилось не смотря на ваш совет =( Вот код
Код


# -*- coding: cp1251 -*-

from ftplib import FTP
import os.path
import os

    
print "CONNECTING TO FTP SERVER..."
ftp = FTP('server.in.ua')   
ftp.login("login", "pwd")
ftp.sendcmd('TYPE I')
ftp.cwd("pub/images")
content = ftp.nlst()

#в чистом списке останутся только jpg файлы
clear_list = []
for r_file in content:
    if ".jpg" in r_file:
        clear_list.append(r_file)
        print ftp.size(r_file) #ОШИБКА size not allowed in ASCII mode



PM MAIL   Вверх
_Viper_
Дата 3.2.2009, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 8.11.2006

Репутация: 10
Всего: 11



Попробуй:
Код

# -*- coding: cp1251 -*-

from ftplib import FTP
import os.path
import os

    
print "CONNECTING TO FTP SERVER..."
ftp = FTP('server.in.ua')   
ftp.login("login", "pwd")

ftp.cwd("pub/images")
content = ftp.nlst()

ftp.sendcmd('TYPE I')    #ставим непосредственно перед size

#в чистом списке останутся только jpg файлы
clear_list = []
for r_file in content:
    if ".jpg" in r_file:
        clear_list.append(r_file)
        print ftp.size(r_file) #ОШИБКА size not allowed in ASCII mode

PM MAIL   Вверх
doctorltd
Дата 4.2.2009, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 3.2.2009

Репутация: нет
Всего: нет



Спасибо, получилось! А что на счёт второй части вопроса - как узнать время изменения удалённого файла?
PM MAIL   Вверх
_Viper_
Дата 4.2.2009, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 8.11.2006

Репутация: 10
Всего: 11



Могу предложить парсить результат команды nlst.
PM MAIL   Вверх
doctorltd
Дата 5.2.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 3.2.2009

Репутация: нет
Всего: нет



И как это сделать? У меня из вывода nlst получается вытянуть только имя файла!
PM MAIL   Вверх
doctorltd
Дата 5.2.2009, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 3.2.2009

Репутация: нет
Всего: нет



Все, получилось через ftp.retrlines('LIST', content.append)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0675 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.