[Server] батник копирование на ftp, с затиркой старых файлов

Тема в разделе "Windows", создана пользователем Alex_Foks, 22 мар 2013.

Модераторы: ADMiNZ
  1. Alex_Foks

    Alex_Foks Блуждающий

    Регистр.:
    14 дек 2010
    Сообщения:
    165
    Симпатии:
    35
    собственно есть сервер win2003
    выполняется копирование батников по пути D:\!!BackUP\Last_10_Days
    файлы получаются такие
    01____00.00____22.03.2013.zip
    02____00.00____21.03.2013.zip
    03____00.00____20.03.2013.zip
    и т.д. до
    10____00.00____13.03.2013.zip
    размеры архивов где то 500-600 мб.
    есть ftp

    как мне передавать каждый день файл архива на ftp по числу в названии
    то есть батник проверяет появившийся архив с последней датой и копирует его на ftp
    + и перед копированием 3-его архива удаляет 2 архив и копирует 3-ий архив на ftp
    так как ftp всего 1.3 Gb
     
  2. Simak

    Simak Создатель

    Регистр.:
    15 ноя 2012
    Сообщения:
    34
    Симпатии:
    36
    Чуток не понял сути. Как я понял: есть папка на локалхосте "D:\!!BackUP\Last_10_Days" из нее нужно копировать 2 самых свежих архива на удаленный ftp (т.к. размер позволяет хранить только 2 файла таких размеров). Еще понял по структуре названия файлов, что 2 самых свежих архива будут всегда начинатся с 01 и 02. Я все верно понял?

    Если да, то создаешь .bat файл с такой строкой:
    Код:
    ftp.exe -s:ftp.txt>log.txt
    
    Создаешь ftp.txt в той же папке, что и .bat с таким содержанием:
    Код:
    open 255.255.255.255 //адрес удаленного ftp-сервера
    login //логин
    pass  //пароль
    binary
    put D:\!!BackUP\Last_10_Days\01*.zip /www/ //копирует файлы по маске имен последних 2-х файлов 01*.zip и 02*.zip, "/www/"-удаленный каталог на ftp
    put D:\!!BackUP\Last_10_Days\02*.zip /www/
    bye
    Для .bat файла делаешь задание запускаться раз в сутки и все(это можно сделать в планировщике заданий Windows или из той же cmd).

    И забыл там еще добавить, чтобы папка на ftp вычищалась от старых файлов перед копированием, т.к. имена файлов хоть и будут начинаться с 01 и 02 но из-за даты всегда разные будут, соответственно, перезаписи не будет, и уже на втором запуске произойдет ошибка копирования от нехватки места.
     
    Alex_Foks нравится это.
  3. Alex_Foks

    Alex_Foks Блуждающий

    Регистр.:
    14 дек 2010
    Сообщения:
    165
    Симпатии:
    35
    что то похожее и я наваял, а вот как прописать удаление файла ?
     
  4. Simak

    Simak Создатель

    Регистр.:
    15 ноя 2012
    Сообщения:
    34
    Симпатии:
    36
    Ну раз похожее наваяли, то могли и представить, а все бы оценили работоспособность! В сети много вариантов, но что-то они как-то не работали. А я Вам дал проверенный мной рабочий код. А раз уж с предыдущим справились, то с такой мелочью думаю у Вас проблем не возникнет. Но раз во всех поисковиках Вас забанили, то вот первое попавшееся из сети:
    Для того, чтобы удалить каталог на ftp сервере при помощи ftp команд, выполните следующие действия:

    1. Подключитесь к серверу ftp.

    2. В командной строке введите следующую команду:
    rmdir directory

    где, вместо directory, укажите имя удаляемого каталога.

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

    delete directory/*


    и все файлы, которые находятся в удаляемом каталоге, будут удалены.

    3. Завершите ftp сеанс, выполнив в командной строке:

    quit
     
  5. Alex_Foks

    Alex_Foks Блуждающий

    Регистр.:
    14 дек 2010
    Сообщения:
    165
    Симпатии:
    35
    Ну раз похожее наваяли, то могли и представить, а все бы оценили работоспособность! В сети много вариантов, но что-то они как-то не работали. А я Вам дал проверенный мной рабочий код. А раз уж с предыдущим справились, то с такой мелочью думаю у Вас проблем не возникнет. Но раз во всех поисковиках Вас забанили, то вот первое попавшееся из сети:
    Для того, чтобы удалить каталог на ftp сервере при помощи ftp команд, выполните следующие действия:

    1. Подключитесь к серверу ftp.

    2. В командной строке введите следующую команду:
    rmdir directory

    где, вместо directory, укажите имя удаляемого каталога.

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

    delete directory/*


    и все файлы, которые находятся в удаляемом каталоге, будут удалены.

    3. Завершите ftp сеанс, выполнив в командной строке:



    а как можно почистить, последний файл по дате ?
     
  6. Simak

    Simak Создатель

    Регистр.:
    15 ноя 2012
    Сообщения:
    34
    Симпатии:
    36
    Если проблем со скоростью доступа к ftp нет, то можно просто очищать папку с 2 старыми архивами, и заливать 2 самых свежих. Если же это проблематично, можно что-нить придумать.
     
    Alex_Foks нравится это.
  7. Alex_Foks

    Alex_Foks Блуждающий

    Регистр.:
    14 дек 2010
    Сообщения:
    165
    Симпатии:
    35
    Решил копии ложить, на внешний сетевой накопитель, поэтому вопрос так сказать решен. (другим способом)
    PS спасибо Simak за помощь )
     
    Simak нравится это.
  8. parenek

    parenek Создатель

    Регистр.:
    6 сен 2012
    Сообщения:
    21
    Симпатии:
    1
    я данную проблему решил с помощью NetCopier.