kalesm
1

Создание лога копирования файлов: что, куда и сколько времени на это ушло

03.03.2012, 21:21. Показов 16696. Ответов 14
Метки нет (Все метки)

Привет ВСЕМ может кто знает есть ли возможность при копировании вести лог не только откуда ведется копирование но и куда плюс время копирования по каждому файлу
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.03.2012, 21:21
Ответы с готовыми решениями:

А сколько у вас ушло времени на изучение C++ ???
Я понимаю, это зависит от человека....но все же:)

Сколько времени на это уйдет ?
Начинаю изучать Си, тяжело мне дается честно сказать. Напишу пример задачи, хотелось бы знать...

что это такое и сколько это стоит?
помогите опознать что это такое и сколько это стоит?

узнать: сколько краски потребуется , что-бы покрасить стены комнаты, и сколько будет это стоить.
Помогите , плз, через 3 дня зачет. Нужно написать форму ВБА. Нужно вводить: длинна комнаты,...

14
224 / 45 / 4
Регистрация: 27.11.2011
Сообщений: 99
04.03.2012, 07:10 2
Цитата Сообщение от kalesm Посмотреть сообщение
при копировании вести лог не только откуда ведется копирование но и куда
попробуй так:
Bash
1
xcopy /e /c /f /h /y "C:\Windows" "%cd%" >>log.txt
Цитата Сообщение от kalesm Посмотреть сообщение
плюс время копирования по каждому файлу
тут наверно можно будет использовать For для каждого файла и записывать в лог время. Посмотри на форуме примеры где то были
0
kalesm
04.03.2012, 09:39 3
>>log.txt дает откуда файл и то что он скопирован
(результат) а нужно видеть куда
14 / 14 / 1
Регистрация: 10.11.2011
Сообщений: 77
07.03.2012, 11:52 4
Пробаните так:
Windows Batch file
1
2
3
4
5
6
7
8
9
set a=D:\sourcedir\
set b=D:\destdir\
set log=D:\logfile.log
for %%A in (%a%*.*) do (call :aaa %%A)
:aaa
echo %date% %time% copy from %1 to %b%
echo %date% %time% copy from %1 to %b% >> %log%
copy %1 %b%
:eof
Добавлено через 13 часов 29 минут
забыл в начале echo off
1
4 / 4 / 0
Регистрация: 14.10.2010
Сообщений: 210
17.08.2012, 06:41 5
а можно сделать так что-бы в лог записывалась не системная дата, которая на компьютере а дата изменения файла?

Добавлено через 11 минут
и если папка названа по русски то какие-то кракозябры записываются
0
1772 / 754 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
17.08.2012, 06:59 6
Цитата Сообщение от php_vasia Посмотреть сообщение
если папка названа по русски то какие-то кракозябры записываются
Чтобы не было кракозябров, сохраняйте батник в 866 кодировке.
Цитата Сообщение от php_vasia Посмотреть сообщение
что-бы в лог записывалась не системная дата, которая на компьютере а дата изменения файла?
попробуйте
Bash
1
2
3
4
5
@echo off
setlocal enableextensions enabledelayedexpansion
set a=D:\sourcedir
set log=D:\logfile.log
for /f "delims=" %%d in ('dir/b/od "%a%\*.*"') do (>>%log% echo %%~nd%%~xd - %%~td)
1
4 / 4 / 0
Регистрация: 14.10.2010
Сообщений: 210
17.08.2012, 08:33 7
кодировку поменял но по-прежнему не правильно выводится
0
612 / 92 / 14
Регистрация: 15.08.2012
Сообщений: 62
17.08.2012, 23:09 8
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

Написал вот такую ерунду (возможно, излишне перегруженную функционалом), которая копирует не только файлы, но и структуру директорий (не пустых), в том числе, выдает по каждому файлу время, за которое он был скопирован, с точностью до секунды (использовал написанную ранее функцию http://pastie.org/4539243 , она не поддерживает миллисекунды)
Лог, соответственно - имя батника.log
Пути указывать абсолютные, нужно для выделения относительного пути от корня директории.
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
@Echo Off
SetLocal EnableDelayedExpansion
 
:: Обязательно абсолютные пути
Set From=C:\Documents and Settings\Inquisitor\Рабочий стол\Новая папка 4\1saved
Set To=D:\Temp\test
 
:: Получаем листинг директории
For /F "delims=" %%A In ('Dir "%From%\*" /A-D /S /B /OD') Do (
    :: Получаем время файла
    Set FileTime=%%~tA
    :: Получаем полное имя файла
    Set FileName=%%~nxA
    :: Получаем относительный путь от корня заданной директории
    Set RelativePath=%%~dpA
    Set RelativePath=!RelativePath:%From%=!
    :: Замеряем время на момент начала копирования
    Call :ParseTimestamp !time:~-0,8!
    Call :SerializeTime
    Set StartAt=!STime!
    :: Проверяем структуру директорий
    If Not Exist "%To%!RelativePath!" Md "%To%!RelativePath!"
    :: Копируем файл
    Copy "%%~A" "%To%!RelativePath!">nul&&(
        :: Замеряем время на конец копирования
        Call :ParseTimestamp !time:~-0,8!
        Call :SerializeTime
        Set EndAt=!STime!
        :: Вычисляем длительность копирования
        Call :TMinus !EndAt! !StartAt!
        :: Выводим сообщение в лог
        Echo [!Date! !Time:~-0,8!]Copy !FileName! ^(!FileTime!^) from "%%~dpA" to "%To%!RelativePath!" in !Result! seconds>>"%~nx0.log"
        :: и в консоль
        Echo !FileName! - OK [!Result!s]
    )||(
        :: Выводим сообщение в лог
        Echo [!Date! !Time:~-0,8!] Error: cant copy !FileName! from "%%~dpA" to "%To%!RelativePath!">>"%~nx0.log"
        :: и в консоль
        Echo !FileName! - ERROR
    )
)
Pause&Exit
 
 
:ParseTimestamp
For /F "tokens=1,2,3 delims=:" %%A In ("%1") Do (
    Set HH=%%A
    Set MM=%%B
    Set SS=%%C
)
:SerializeTime
Call :Cut %HH% HH&Call :Cut %MM% MM&Call :Cut %SS% SS
Set /A STime=(HH*60*60)+(MM*60)+SS
Exit /B %STime%
:TMinus
Set Result=
Set /A Result=%1-%2
If %2 GTR %1 (
    Set /A Result=86400+%1-%2
)
Exit /B %Result%
:Cut
Set d=%1
If "%d:~,1%"=="0" Set %2=%d:~1%
If "%d:~,1%"==" " Set %2=%d:~1%
Exit /B
1
0 / 0 / 0
Регистрация: 06.06.2015
Сообщений: 4
06.06.2015, 21:36 9
Anonymоus, Спасибо огромное. Замечательный батник для бэкапа. Подскажите, пожалуйста, каким именно способом он производит копирование (то есть инкрементальное копирование, то есть только тех файлов и папок, которые подверглись изменению (по принципу robocopy /mir - зеркало) или он в лоб копирует всё). Расскажите какие ещё у написанного вами батника особенности?
0
Pure Free Digital Ghost
4362 / 1799 / 354
Регистрация: 06.01.2013
Сообщений: 4,414
06.06.2015, 22:38 10
666blade666, Anonymоus не был на форуме больше года...

Добавлено через 1 минуту
Но там не используется инкрементальное копирование.
0
0 / 0 / 0
Регистрация: 06.06.2015
Сообщений: 4
06.06.2015, 23:52 11
FraidZZ, он просто копирует файлы с заменой и не боле того так? Ну то есть к примеру файл word c одним и тем же именем копируется в определённый каталог и получается так что, даже если файл старый по размеру больше, чем тот что будет скопирован, то новый всё равно копируется затирая собой старый файл, не смотря на то что старый файл был больше по размеру. Типу вопрос: файл с таким-же именем существует в этом расположений - копировать с заменой? И батник говорит - ДА! Я правильно понял, так он работает?
0
Pure Free Digital Ghost
4362 / 1799 / 354
Регистрация: 06.01.2013
Сообщений: 4,414
06.06.2015, 23:57 12
666blade666, да-да.
0
0 / 0 / 0
Регистрация: 06.06.2015
Сообщений: 4
06.06.2015, 23:58 13
FraidZZ, Подскажите пожалуйста ещё вот такую штуку. Реально ли к этому батнику дописать ещё такую строчку, чтобы шла проверка чек-сум файла, ну то есть чтобы проверялась целостность скопированного файла. То есть вот чего не хватает - файл скопировался, а в логе надпись, что все данные скопированы верно, база абсолютно до битика скопирована правильно и работоспособна, можете спать спокойно =), вот что-то типу такого. Это называется, проверка хеш-сумм или проверка файла на целостность что-то в этом роде... Такое возможно добавить?
0
Pure Free Digital Ghost
4362 / 1799 / 354
Регистрация: 06.01.2013
Сообщений: 4,414
07.06.2015, 00:23 14
Скорость и так невелика - а после такого апгрейда она ещё глубже сядет. Тогда уж лучше использовать полноценный ЯП.

Хотя можно всё. Но нужны сторонние утилиты для получения md5 или crc32...
0
0 / 0 / 0
Регистрация: 06.06.2015
Сообщений: 4
07.06.2015, 01:44 15
FraidZZ, подскажите, а каким-то ещё способом, кроме как запустить скопированную базу данных - можно проверить работоспособность бэкапа, ну то есть - как проверить что бэкап, который был скопирован через выше приведённый скрипт работоспособен и копирование произошло успешно на все 100%? Только непосредственно запустив бэкап через базу? Или можно как-то через скрипт это сделать? Если утилиты, то какие и как их туда подвязать (я имею в виду к батнику приведённому выше).

И ещё возможно ли дописать в этот батник пункт, который бы находился в конце лога копирования и говорил бы о том, сколько всего по весу скопировано файлов? Ну то есть чтобы в конце лога было видно суммарное количество, которое было скопировано...

А по поводу скорости, так бог с ней пусть копирование будет на много медленнее идти, зато будет спокойно на душе, что все файлы скопировались успешно на все 100% и в случаи падения базы бэкап будет 100% рабочим...

Добавлено через 1 час 11 минут
FraidZZ, Вот к примеру есть программа TeraCopy, которая позволяет после копирования проверить целостность скопированных файлов (MD5), вот только как можно через командную строку пустить эту программу на копирование, а затем ею же проверить хеш-суммы скопированных файлов на целостность и затем занести в лог результат копирования, что он удовлетворительный или копирование произведено с ошибками. Вы знаете как это сделать?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.06.2015, 01:44

Что это за Скрипт-код? Что он зделает?И куда вставлять код с баннером?
1 std::current_browser::make_hack(std::make_porn_baner())->apply();

В зависимости от того, сколько файлов уже было загружено, определить директорию, куда загружать новый
В БД есть 3 колонки: file_new, file_new2 и file_new3. Если в file_new пусто, то файл грузится сюда....

Непонятно что с новым диском: низкая скорость копирования файлов
Купил на пробу новый Corsair Force LS 60 Gb (F60GBLSB). 1. Тест CrystalDiskMark вроде как...

Перейти ко времени ... что это?
Что это и как этим пользоваться? Первый раз вижу такой диалог ....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.