Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/27: Рейтинг темы: голосов - 27, средняя оценка - 4.52
61 / 49 / 6
Регистрация: 07.01.2010
Сообщений: 307

Теневое копирование

09.03.2011, 21:39. Показов 5241. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите в каком направлении двигаться...Мне надо сделать теневое копирование USB флешки, при ее подсоединении к компьютеру. Как определить, что флешку вставили и как скопировать всю информацию с нее в определенную папку?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.03.2011, 21:39
Ответы с готовыми решениями:

Теневое копирование в Windows 7
Приветствую. В связи с новой эпидемией вирусов-шифровальщиков возникла задача: настроить\включить "восстановление системы" для...

Автоматическое теневое копирование файлов, сохраняемых на подключённый внешний носитель
Здравствуйте. Возникла необходимость реализации задачи, обозначенной в заголовке. Поиск в интернете выдаёт только готовые решения, да и те...

Теневое подключение к базе. Как?
Есть сборка базы на dbExpress. Проблема в том, что юзеры и так заходят в программу под своими аккаунтами. Никому из рядовых отдавать пароли...

25
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
09.03.2011, 23:47
1. GetLogicalDriveStrings - получаем список логических дисков в вид
2. GetDriveType("c:\\") - получаем тип диска для каждой буквы.
DRIVE_REMOVABLE - флешка
DRIVE_FIXED - жесткий диск
DRIVE_CDROM - CD-ром

http://ru.w3support.net/index.php?db=so&id=271907

Рекурсивное копирование папки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void TForm2::cp(String FileSource, String FileDestan)              
{                                                                  
  char cFrom[MAX_PATH]={0};                                        
  strcpy(cFrom,FileSource.c_str());                                
                                                                   
  SHFILEOPSTRUCT fos;                                              
  memset(&fos,0,sizeof(SHFILEOPSTRUCT));                           
  fos.hwnd = Application->Handle;                                  
  fos.wFunc = FO_COPY;                                             
  fos.pFrom = cFrom;                                               
  fos.pTo = FileDestan.c_str();                                    
  fos.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMMKDIR;                 
  SHFileOperation(&fos);                                           
}                                                                  
                                                                   
void __fastcall TForm2::Button1Click(TObject *Sender)              
{                                                                  
  cp("C:\\D\\KK","C:\\B");                                         
}
и какой смысл вы вкладываете в сакральное выражение теневое копирование?
1
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
10.03.2011, 06:18
Если каждый раз вставлять флешку, то инфа либо не будет копироваться (если не нужно перезаписывать) либо будет всё перезаписано (но будет тратиться много времени на копирование).
Лучше копирование сделать через FileFindFirstFile и FileFindNextFile. Используя этот подход можно копировать только те файлы, даты которых на флешке изменились, а также можно сделать так, чтобы копировались файлы только с определенными расширениями и не больше определенного размера.
1
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.03.2011, 07:28
Цитата Сообщение от LK Посмотреть сообщение
какой смысл вы вкладываете в сакральное выражение теневое копирование?
У него там хранятся ролики про призраков.
0
61 / 49 / 6
Регистрация: 07.01.2010
Сообщений: 307
10.03.2011, 16:12  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
и какой смысл вы вкладываете в сакральное выражение теневое копирование?
Цитата Сообщение от taras atavin Посмотреть сообщение
У него там хранятся ролики про призраков.
Как вариант.
Под термином Теневое копирование я понимаю то копирование, о котором не знает пользователь флешки.Т.е. он вставил флеху, но не знает о том, что с нее идет копирование данных)))
Спасибо за ответы и за указание пути)))
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
10.03.2011, 17:40
Цитата Сообщение от FroL Посмотреть сообщение
Под термином Теневое копирование я понимаю то копирование, о котором не знает пользователь флешки.Т.е. он вставил флеху, но не знает о том, что с нее идет копирование данных)))
не эстетично это, мягко говоря, вы, видать, подворовывать собираетесь..
а копирование оно само по себе - незаметное, и именно для визуализации требует определенных телодвижений, например, написав, SaveToFile - вы не наблюдаете плотников, которые сколачивают ящичек для вашего супер-пупер файлА, и грузчиков, которые несут оный ящичек в укромное место жесткого диска .
0
61 / 49 / 6
Регистрация: 07.01.2010
Сообщений: 307
10.03.2011, 17:44  [ТС]
Ни чего воровать я не собираюсь)))Просто необходимо сделать такую прогу. Просто эта прога, а точнее часть ее, необходима мне для защиты сервера от НСД и от несанкционированного копирования данных с сервера.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
10.03.2011, 20:08
пардон, в первоисточнике было по другому
копирование, о котором не знает пользователь флешки.
- но это - сугубо ваше личное дело .
0
61 / 49 / 6
Регистрация: 07.01.2010
Сообщений: 307
16.03.2011, 15:35  [ТС]
Косяк с копированием(((Когда идет копирование, то появляется окно копирования(((Его можно как нить убрать, что бы процесс копирования не показывался???

Добавлено через 5 минут
Нашел))))
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void TForm2::cp(String FileSource, String FileDestan)              
{                                                                  
  char cFrom[MAX_PATH]={0};                                        
  strcpy(cFrom,FileSource.c_str());                                
                                                                   
  SHFILEOPSTRUCT fos;                                              
  memset(&fos,0,sizeof(SHFILEOPSTRUCT));                           
  fos.hwnd = Application->Handle;                                  
  fos.wFunc = FO_COPY;                                             
  fos.pFrom = cFrom;                                               
  fos.pTo = FileDestan.c_str();                                    
  fos.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMMKDIR | 4;                 
  SHFileOperation(&fos);                                           
}                                                                  
                                                                   
void __fastcall TForm2::Button1Click(TObject *Sender)              
{                                                                  
  cp("C:\\D\\KK","C:\\B");                                         
}
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
16.03.2011, 16:13
Можно было сделать понятнее - FOF_SILENT .
0
61 / 49 / 6
Регистрация: 07.01.2010
Сообщений: 307
16.03.2011, 18:28  [ТС]
Я только нашел численное представление флага)))За подсказку спасибо)
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
16.03.2011, 19:03
Structure SHFILEOPSTRUCT
0
61 / 49 / 6
Регистрация: 07.01.2010
Сообщений: 307
16.03.2011, 19:06  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
Я уже нашел на русском)))
Цитата Сообщение от kzru_hunter Посмотреть сообщение
Если каждый раз вставлять флешку, то инфа либо не будет копироваться (если не нужно перезаписывать) либо будет всё перезаписано (но будет тратиться много времени на копирование).
Лучше копирование сделать через FileFindFirstFile и FileFindNextFile. Используя этот подход можно копировать только те файлы, даты которых на флешке изменились, а также можно сделать так, чтобы копировались файлы только с определенными расширениями и не больше определенного размера.
Вы были правы...Каждый раз флешка заново копируется в каталог и занимает это достаточно много времени(((
А можно примерчик с применением FileFindFirstFile и FileFindNextFile, а то что то я туплю(((Каким образом построить рекурсию и самое главное - как проверить что файл существует и имеет изменение - мне что его проверять по констрольной сумме??))))
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
16.03.2011, 19:35
Structure SHFILEOPSTRUCT - ссылка была не туда .
Цитата Сообщение от FroL
Я уже нашел на русском)))
покаж .

Добавлено через 2 минуты
Каждый раз флешка заново копируется в каталог и занимает это достаточно много времени(((
Внимательно читаем структуру:
FOF_NO_CONNECTED_ELEMENTS
Version 5.0. Do not move connected files as a group. Only move the specified files.
FOF_FILESONLY
Perform the operation only on files (not on folders) if a wildcard file name (*.*) is specified.
Тем более, что "уже нашел на русском".
0
61 / 49 / 6
Регистрация: 07.01.2010
Сообщений: 307
16.03.2011, 19:51  [ТС]
Вот здесь)))http://delphi-faq.zoxt.net/544.htm

Добавлено через 14 минут
Цитата Сообщение от LK Посмотреть сообщение
Structure SHFILEOPSTRUCT - ссылка была не туда .
покаж .

Добавлено через 2 минуты

Внимательно читаем структуру:Тем более, что "уже нашел на русском".
Что то я не понимаю(((Допустим - если после копирования файлы на флешке не изменились, то пойдет копирование с этими флагами???
Просто у меня будет все время запущена прога и я поставлю таймер на 1 минуту - после срабатывания таймера прога будет проверять есть ли флешка и копировать с нее информацию. А если данные не изменились, то тогда зачем их заново копировать...Ни чего умнее я не придумал(((
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
16.03.2011, 20:00
да и нечего выдумывать, все правильно, только на одной струтуре SHFILEOPSTRUCT свет клином не сошелся.
0
61 / 49 / 6
Регистрация: 07.01.2010
Сообщений: 307
25.03.2011, 21:26  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
Рекурсивное копирование папки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void TForm2::cp(String FileSource, String FileDestan)              
{                                                                  
  char cFrom[MAX_PATH]={0};                                        
  strcpy(cFrom,FileSource.c_str());                                
                                                                   
  SHFILEOPSTRUCT fos;                                              
  memset(&fos,0,sizeof(SHFILEOPSTRUCT));                           
  fos.hwnd = Application->Handle;                                  
  fos.wFunc = FO_COPY;                                             
  fos.pFrom = cFrom;                                               
  fos.pTo = FileDestan.c_str();                                    
  fos.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMMKDIR;                 
  SHFileOperation(&fos);                                           
}                                                                  
                                                                   
void __fastcall TForm2::Button1Click(TObject *Sender)              
{                                                                  
  cp("C:\\D\\KK","C:\\B");                                         
}
На моем компе все норм копирует, а вот на другом выдает ошибку(((Может из за того что там стоит каспер??
На счет определения - нашел способ определения флешки без таймера, но почему то ругается на переменные типа: DEV_BROADCAST_VOLUME, DEV_BROADCAST_HDR, DBT_DEVICEARRIVAL и т.д. При чем у остальных все норм - в чем проблема???
0
Заблокирован
25.05.2011, 20:31
a как сделать чтобы он копировал не только выбранную папку а все файлы на флешке
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
25.05.2011, 23:19
Цитата Сообщение от Жека_ Посмотреть сообщение
a как сделать чтобы он копировал не только выбранную папку а все файлы на флешке
указать в качестве пути букву диска
C++
1
path = "E:\\"
0
Заблокирован
25.05.2011, 23:38
он нехочет копировать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.05.2011, 23:38
Помогаю со студенческими работами здесь

Копирование определенного текста из файла, копирование и вставка в статичную переменную
Доброго вечера. Делаю программу которая бы выводила погоду на сегодня через данные сайта. Завис на передаче данных с сайта. Как можно...

Excel. Копирование столбца, при заполнении 22-й строки продолжить копирование в соседний столбец
Всем привет. Задача: Есть таблица Excel, заполнены 2 столбца, из них первый - порядковые номера, второй - числа. Нужно: - провести...

Копирование одного текстового файла в другой, используя посимвольное, построчное и поблочное копирование
Здраствуйте, у меня такая проблемма мне надо обеспечить копирование одного текстового файла в другой, используя посимвольное, построчное...

Копирование: Ввод имени папки и копирование из нее файлов
Доброго времени суток! Реально ли реализовать подобное с помощью bat ? Знаю, что можно создать папку с именем, которое можно задать. ...

Копирование столбца из DataGridView. Копирование ячейки из ДатаГридВью
Доброго времени суток! Что то читал читал форумы и гугл - а так и не нашел для себя решения. Смотрю в книгу, вижу... в общем ситуация...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 05.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 17.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru