Процесс отвечающий за копирование файлов

Обновлено: 06.07.2024

Ключом к этому вопросу является понимание внутренней организации диска (она описывается тут в общем, без деталей реализации в разных файловых системах).

Всё пространство диска поделено на последовательные блоки — кластеры (есть еще секторы, дорожки. но это нас не интересует в данном случае). У каждого кластера есть номер. Таким образом мы получаем адресуемое пространство: можем указывать номер кластера и получать доступ к этой порции данных.

Файл не лежит на диске «одним куском». Файл занимает свободные кластеры на диске, и может быть разорван на части (фрагментирован), по этому к файлу нужна сопроводительная информация:

* список номеров кластеров в которых он лежит, заканчивающийся нулём;
* запись оглавления, где содержится имя, атрибуты (только для чтения, системынй, скрытый и т.п., размер, время создания, изменения, последнего обращения к нему), а также номер начального кластера, где лежит файл.
Записи оглавления тоже лежат в определённых кластерах. Если запись описывает файл, то она указывает на кластер, где начинается файл, а если описывает папку — то указывает на кластер, где лежит другое список с оглавлением.

То есть когда мы указываем путь к файлу, то можно начиная с корневого оглавления по пробежаться по оглавлениям папок переходя от кластера к кластеру, потом найти запись оглавления для этого файла, и определить где начинается файл и какую имеет длину. А затем пробежаться по списку номеров кластеров, читая каждый кластер и склеивая их содержимое. Последний кластер занят обычно не полностью, по этому какая часть там лишняя нам покажет общая длина файла которую мы взяли из записи оглавления.

Чтобы переместить файл нужно в первую очередь определить, находится ли исходный файл и целевой на одном и том же диске.

1) Если это так, то создаётся новая запись оглавления на новом месте в том оглавлении, которое соответствует целевой папке. А старая запись оглавления для экономии времени не удаляется, а помечается как свободная. Она будет занята при первой возможности. Сам файл и список его размещения на диске при этом не меняются. Перемещение завершено.

2) Если целевой файл находится на другом диске, то в первую очередь происходит копирование файла на новое место. Файл вычитывается так как показано в нелирическом отступлении выше, и записывается в свободные кластеры на другой диск. Как только запись завершена, составляется список размещения файла (цепочка номеров кластеров) и тоже сохраняется в системную область диска. Напоследок в списке оглавления соответствующей папки создаётся запись оглавления для этого файла. Копирование файла завершено. И теперь совсем напоследок происходит удаление исходного файла: запись оглавления помечается как удалённая. Список размещения удаляется. Кластеры, которые ранее занимал этот файл помечаются как свободные. (Я умышленно упустил из объяснения выше, что есть еще одна системная область на диске, где буквально битами (один бит — один кластер) обозначается, какой кластер свободен, а какой занят.)

Вот такая изнурительная работа происходит внутри операционной системы, когда мы перемещаем файлы.

Учимся копировать, вырезать файлы и папки

Очень часто появляется необходимость перенести какой-либо файл в другую папку, например пришел к вам знакомый, скинул вам на рабочий стол фотографии или фильм и ушел.

А вам теперь нужно его перенести в папку где у вас хранятся фотографии ну или фильмы.

Для начала нам понадобиться вспомнить принцип работы мышки, правая кнопка «спрашивает что сделать», а левая выполняет вашу команду.

Рассмотрим случай когда файл, который нужно перенести расположен на рабочем столе.

песня на рабочем столе

У меня это будет песня «о боже какой мужчина» ,находим ее и нажимаем правой кнопкой мышки, то есть спрашиваем у системы, что можно сделать с этой песней.

скрин вырезать копировать

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

Функция копировать создает в любом нужном вам месте полную копию файла или папки, при этом нужно понимать, что на компьютере теперь два полностью одинаковых объекта. Чаще всего эту возможность используют, чтобы сбросить информацию на флешку для друзей, родственников или знакомых, потому что файл остается и у вас и копируется еще для кого-то.

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

Разбираем сначала функцию копировать

Итак, мы нажали на песню правой кнопкой, в выпадающем меню выбрали функцию копировать и нажали левой кнопкой мышки для того чтобы система поняла, что мы сейчас будем копировать песню.

копируем файл

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

схема копирования

Снова покажу на своем примере, я буду копировать песню в папку с музыкой, которая расположена на «локальном диске D». Внимательно наблюдаем за картинками и повторяем.

Нажимаю на значок «мой компьютер» (двойным щелчком левой кнопки мыши)

Попадаю на окно выбора жесткого диска, тут может быть несколько директорий, я выбираю диск «D», вы можете выбрать нужный вам диск, но настоятельно рекомендую не использовать для хранения файлов директорию «С»

локальные диски

Теперь ищу папку музыка и захожу в нее.

папка музыка

Зайдя в папку музыка нам осталось сообщить системе, что мы хотим переместить песню именно в эту папку.

Для этого выбираем пустое место, нажимаем правой кнопкой мыши и видим такое меню:

вставляем файл

В нем нам осталось нажать левой кнопкой мыши на строчку вставить и система поймет, что вы хотите положить песню именно сюда ну и соответственно скопирует ее в эту папку.

папка музыка

Как видите песня появилась в нужной нам папке, вы сделали все правильно, если не появилась, то вы что-то пропустили.

Кратко напоминаю алгоритм:

Выбираем файл – копируем его – заходим в нужную папку – вставляем файл.

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

копирование файлов

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

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

Смотрим на том же примере с песней, но теперь мы ее будем не копировать, а вырезать.

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

вырезаем файл

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

Теперь мы идем в папку куда хотим перенести эту песню:

схема перемещения файла

После того как зашли в папку музыка, нажимаем правой кнопкой мышки на пустое место и в появившемся меню выбираем строчку вставить.

меню вставить

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

файл после функции вырезать

Надеюсь вы усвоили материал и теперь можете свободно перемещать файлы и папки на своем компьютере.

В следующем уроке мы разберем не менее важный вопрос, как удалить ненужные файлы и папки с ПК.

Windows Vista
SP1 по многим параметрам улучшает оригинальную
Vista, в том числе в поддержке новых устройств,
управлении питанием, безопасности и стабильности работы. Первый сервис пак
должен выйти уже сегодня, так что до его полномасштабного внедрения остались
буквально часы. Одним из улучшений станет ускоренное копирование файлов в
разных обстоятельствах - в локальном копировании на одном диске, в копировании с
удаленных не-Vista систем, копировании между
SP1 компьютерами. Как же добились таких улучшений?
Ответ достаточно сложен и лежит в изменениях, которые претерпел механизм
копирования при переходе от Windows XP к
Vista и в дальнейших изменениях которым подвергся в
SP1. Каждый копирует файлы и я думаю будет очень
полезным рассмотреть развитие процесса копирования что бы в конце концов понять
как же он улучшен в первом сервис-паке.

Копирование
выглядит довольно простой операцией: открыть исходный файл, создать целевой и
прочитанное из исходного записать в целевой. В действительности же,
быстродействие копирования зависит от множества факторов, таких как
загруженность процессора, использовании памяти и передаваемых через систему
данных. И улучшения в одной область неизбежно приводят к упадку в другой. В
дополнении к этому, семантическая информация не доступна для процесса
копирования и не может помочь в создании оптимального процесса копирования.
Например, если бы он знал что вы не планируете использовать целевой файл, то
можно было бы избежать кэширования его в памяти, но в случае если бы файл был
немедленно использован другим приложением, или (как в случае файл-сервера)
клиентская система расшарила файл, то механизм копирования немедленно бы и
приоритетно закэшировал данные на целевой системе.

Копирование в предыдущих Windows

В свете всех компромиссов и недостаточной информации,
механизм копирования в Windows пытается
предусмотреть все сценарии разом. До Windows Vista в
копировании прямо открывались исходный и конечный файлы в режиме кэширования и
последовательно из исходного файла данные читались блоками по 64 Кб (60 Кб в
случае сетевого копирования из-за ограничений, накладываемых протоколом
SMB1.0) за раз и
записывались в целевой по мере прихода. В случае когда доступ к файлу проходит
через кэшированные операции чтения/записи (в противоположность
memory-mapped операциям или операциям с флагом
отказа от буферизации), данные чтения или записи сохраняются в памяти, по
крайней мере до тех пор пока Memory Manager
не решит перераспределить память для других нужд, например на кэширование других
файлов.

Движок копирования полагается на
Windows Cache
Manager для осуществления асинхронного опережающего чтения, которое
позволяет читать исходный файл в фоновом режиме, пока
Explorer занят записью данных на другой диск или удаленную систему. Он
так же использует
опережающую запись Cache Manager для
своевременного сброса содержания файлов из памяти обратно на диск так что бы
память могла бы быть быстро освобождена в случае необходимости и потери данных
при системном сбое диска были бы минимальны. Посмотреть механизм за работой вы
можете в


Process Monitor, в данном случае приведена трассировка копирования 256 Кб
файла в Windows XP из одной директории в другую
(с фильтром на чтение и запись данных):


Первую операцию чтения Explorer (событие 0)
проводит с данными не присутствующими в памяти, что приводит к тому что
Cache Manager
выполняет некэшированное чтение/запись (в нем данные пишутся или читаются прямо
с диска, без кэширования в памяти), для извлечения данных с диска мы видим
событие 1, что видно по трассировке стека:


Видно, что обращение Explorer-а к
ReadFile приводит к чтению файла на 22 шаге в функции
BaseCopyStream и
Cache Manager косвенно задействует некэширумеое чтение
пытаясь использовать меппинг файла в памяти, что и вызывает сбой в 8 шаге.

Так как Explorer открывает файл с последовательным
доступом (что не видно в трассировке), поток опережающего
чтения Cache
Manager-а, запущенный в процессе System, начинает
активно читать файл в пользу Explorer-а в событии 2 и
3. Функцию опережающего чтения вы можете видеть в стеке для второго события:


Возможно вы заметили, что опережающее чтение идет не по тому порядку, который
был инициирован первым не кэшированным чтением. В теории это может замедлить
работу так как головкам винчестера надо будет осуществлять больше движений,
однако Explorer прекращает некэшированное чтение в том
момент когда доходит до данных уже прочтенных
Cache Manager и его чтение совпадает с данными,
уже находящимися в памяти. Обычно Cache
Manager опережает Explorer на 128 Кб в процессе
копирования.

В событии 4 в данном трейсе Explorer
встречается с первой записью и затем мы можем видеть последовательность
перемежающегося чтения и записи. В конце концов поток опережающей записи
Cache Manager-а, так
же запущенный в процессе System, сбрасывает последние
данные целевого файла из памяти на диск при помощи некэшированной записи.

Улучшения в копировании в Vista

Другой проблемой стало копирование с удаленной системы,
при котором содержание файла кэшировалось дважды - сначала при чтении исходного
файла, а потом при записи целевого. Помимо пустой траты памяти на файлы, которые
скорее всего никогда не будут использованы, работа Cache Manager перегружала
центральный процессор, который необходимо было использовать для управления
исходным и конечным файлами.

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

Однако небольшая предосторожность позволяет в значительной степени защитить себя от подобных неприятностей. Чтобы сэкономить время и силы, рекомендуется регулярно осуществлять резервное копирование данных и параметров.

В этой статье описано ручное резервное копирование личных файлов и параметров в Windows 7, Windows Vista, Windows XP и Windows Server 2003. Здесь также описано, как использовать средства по работе с данными в Windows для резервного копирования файлов и параметров.

Дополнительная информация

Способ 1. Ручное резервное копирование файлов и параметров на съемный носитель или в сетевую папку

Самым простым способом является ручное резервное копирование файлов и параметров на съемный носитель или в сетевую папку. Вы можете указать копируемые файлы и параметры, а также интервал резервного копирования.

Примечание. Примерами съемных носителей являются внешние жесткие диски, DVD-диски, компакт-диски и карты памяти USB. Вы можете копировать файлы на другой компьютер или сетевое устройство, если ваш компьютер подключен к сети, например беспроводной.

Чтобы вручную скопировать файлы в сетевую папку или на съемный носитель на компьютере под управлением Windows 7, Windows Vista, Windows XP или Windows Server 2003, сделайте следующее.

Откройте папку "Пользователи" и затем папку с копируемыми файлами.

Скопируйте необходимые папки из папки пользователя в сетевую папку или на съемный носитель.

Чтобы создать резервные копии данных для всех пользователей, повторите действия 2 и 3.

Чтобы определить размер всех файлов в папке пользователя, выделите все папки, щелкните их правой кнопкой мыши и выберите пункт Свойства.

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

Не все приложения хранят свои файлы в папке пользователя. Выясните места хранения файлов необходимых приложений и скопируйте эти файлы в сетевую папку или на съемный носитель.

Способ 2. Использование средства переноса данных для резервного копирования данных на другой компьютер

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

ОС вашего компьютера

ОС целевого компьютера

Резервное копирование компьютера под управлением Windows 7

Перенос файлов и параметров на другой компьютер с Windows 7

Средство переноса данных Windows позволяет реализовать резервное копирование файлов и параметров из учетной записи. После этого их можно восстановить на новом компьютере. Чтобы запустить средство переноса данных Windows, выполните указанные ниже действия.

Следуйте инструкциям по переносу файлов и параметров.

Перенос файлов и параметров на компьютер с Windows Vista

Если вы хотите переместить данные с компьютера на базе Windows 7 на компьютер под управлением Windows Vista, используйте версию средства переноса данных для Windows Vista. Для этого выполните указанные ниже действия.

На компьютере с системой Windows 7 вставьте в дисковод компакт- или DVD-диск с системой Windows Vista.

Закройте программу установки системы Windows Vista.

Откройте по очереди папки support и migwiz.

Дважды щелкните файл Migwiz.exe.

Следуйте инструкциям по переносу данных из системы Windows 7.

Резервное копирование компьютера под управлением Windows Vista

Перенос файлов и параметров на другой компьютер с Windows Vista

Средство переноса данных Windows позволяет реализовать резервное копирование файлов и параметров из учетной записи. После этого их можно восстановить на новом компьютере. Чтобы запустить средство переноса данных Windows, выполните указанные ниже действия.

Следуйте инструкциям по переносу файлов и параметров.

Способ 3. Использование центра архивации и восстановления

В качестве меры предосторожности для резервного копирования данных вы можете использовать центр архивации и восстановления в Windows 7 и Windows Vista.

Резервное копирование компьютера под управлением Windows 7

Примечание. Данные, копируемые с помощью центра архивации и восстановления Windows 7, можно восстановить только в операционной системе Windows 7.

Выберите параметр Настроить резервное копирование в разделе Резервное копирование или восстановление файлов.


Укажите место сохранения резервной копии и нажмите кнопку Далее.

Примечание. Не забудьте сохранить файлы резервных копий на съемном носителе или в сетевой папке.

Выберите параметр Предоставить выбор Windows или Предоставить мне выбор и нажмите кнопку Далее.

Выберите необходимые файлы и нажмите кнопку Далее или Сохранить параметры и запустить архивацию.

Резервная копия будет сохранена в указанном месте.

Резервное копирование компьютера под управлением Windows Vista

Примечание. Данные, копируемые с помощью центра архивации и восстановления Windows Vista, можно восстановить только в операционной системе Windows Vista.

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

Укажите место сохранения резервной копии и нажмите кнопку Далее.

Выберите один или несколько дисков для резервного копирования и нажмите кнопку Далее.

Выберите один или несколько типов файлов для резервного копирования и нажмите кнопку Далее.

Щелкните элемент Сохранить параметры и запустите резервное копирование.

Резервная копия будет сохранена в указанном месте.

Способ 4. Передача файлов с компьютера на базе Windows 2000, Windows XP или Windows Server 2003

Использование мастера переноса файлов и параметров Windows XP

Вы можете использовать мастер переноса файлов и параметров Windows XP, чтобы перенести файлы на компьютер с Windows XP, Windows Server 2003 или Windows 2000.

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

Выберите элементы, подлежащие резервному копированию, и нажмите кнопку Далее.

Дополнительные ресурсы

Рекомендации по резервному копированию:

Не сохраняйте резервные копии файлов в разделе восстановления или на жестком диске, где установлена система Windows.

Примечание. Производители часто настраивают на компьютере раздел восстановления. Обычно он отображается в виде жесткого диска.

Чтобы защитить резервные копии от несанкционированного доступа, храните носители с ними в надежном месте.

Постарайтесь использовать пожаробезопасное расположение, удаленное от вашего компьютера. Также можно зашифровать резервные копии данных.

Читайте также: