Скрипт для копирования файлов с проверкой и записью в лог-файл
Четверг, 1 ноября 2012 г.Рубрика: В помощь сисадмину
Просмотров: 89843
Подписаться на комментарии по RSS
Скрипт для копирования файлов с проверкой и записью в лог-файл
на базе утилит robocopy.robocopy (от англ. Robust File Copy) — утилита командной строки для репликации (не просто копирования) каталогов (папок). Она была доступна как часть Windows Resource Kit и представлена как стандартный компонент Windows Vista, Windows 7 и Windows Server 2008.
Что выполняет скрипт:
- копирует файлы из заданной папки;
- с введение лога, пишим имена скопированных файлов;
- и перед следующим копированием сверяем с записью в логах, если есть файл в логах - то его не копируем, если в логах отсутствует - копируем.
:: ( кодировка Dos 866 если имеется названия папок по русски )
@Echo off
:: ( путь откуда, без кавычек)
set $from=_ПУТЬ_ОТКУДА_
:: ( куда, без кавычек )
set $dest=_КУДА_
::
set $log=_ПУТЬ_ЛОГ_ФАЙЛА\copyfile.log
for /f "delims=" %%i in ('dir "%$from%" /B/A:-D') do Call :CheckLog "%%i"
:CheckLog
If Exist "%$log%" For /f "delims=" %%a in (%$log%) Do If "%%a"=="%~1" Exit /B
robocopy "%$from%" "%$dest%" "%~1" /minage:0
if %errorlevel%==1 (echo.Copy is successful - %~1&echo.%~1>>"%$log%")
/MINAGE:n :: Минимальный возраст файла — исключить файлы, возраст которых менее n дней.
p.s в Windows XP ее нету, надо ставить пакет
p.s.s Утилита robocopy это отличнейшая вещь, очень гибкий инструмент копирования и бэкапа. Вот не больший пример для backup
Еще записи по теме
- Взлом Wi-Fi при помощи Aircrack и Reaver в Linux
- Запуск административных команд из консоли (cmd) Microsoft Windows
- Оптимизация производительности веб-сервера Apache
- Резервное копирование (backup) баз MySQL
- Расширения динамического диска в virtualbox.
- Замена контроллера домена. Перенос контроллера домена.
- Настройка PPTP в Debian Ubuntu сервера и клиента
Комментариев: 9
Если файл исходный 2 кб а скопированный 1 кб то файл будет копироваться?
(Извините, я не разбираюсь в параметрах приведенных вами и хотел бы ответ от вас услышать, спасибо)
Нет, файл не будет копироваться, в данном случаи идет проверка по имени файла, а не по его размерам или дате создания
А реализовать это сложно? Проверку размера и времени создания.
Я бы вас попросил очень интересно применение получается если проверка еще будет к тому же перезапись. Спасибо.
Не чего обещать не буду, смогу посмотреть только в Понедельник
Здравствуйте у меня такая проблема:Мне нужен скрипт для проверки последнего созданного файла в папке и если время его создания превышает 15 минут то выдать сообщение об этом....Сложно ли это реализовать?!Заранее спасибо!
Добрый, думаю что не сложно, вот например получения даты создания самого нового файла в папке
for /f "tokens=*" %%i in (' dir /b /od /a-d /tc ') do set "new_file=%%i"
Если еще актуально?
а с папками как быть
надо и файлы и папки
Олег, надо его немного переделать и все будет ок. Почитай ман к robocopy — утилита командной строки для репликации (не просто копирования) каталогов (папок)
Добрый день, извините но это колесо приделанное к данной утилите robocopy, там есть много ключей которые без проблем решат нужные задачи, например:
/MON:1 :: Наблюдать за источником; перезапустить после n изменений. - скрипт будет работать пока его не закроете!!!
/MIR :: Создать зеркало (MIRror)
/Z :: использовать журнал возобновления, на случай потери сетевого соединения
их там много на все случаи жизни.