Что значит скопировать файл из раздачи

Обновлено: 07.07.2024

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

Суть проблемы:

При обычном копировании через CTRL+C - CTRL+V копирование файла доходило до пределов в 38% - 96%, сеть разрывалась и файл полностью не передавался, а стандартные методы Windows не позволяют делать блочное копирование и не поддерживают докачку файла, соответственно файл всегда получался повреждённым и был не пригоден для его открытия на другом устройстве.

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

Поиск путей решения

Естественно первым делом я пошёл в поисковик и начал искать программы которые поддерживают процесс копирования файлов с докачкой и удивился тому, как часто у пользователей возникает такой вопрос (скриншот приложу ниже), но ответа я так и не нашел, все решения на которые я натыкался это советы программ для копирования по типу "TeraCopy" или "KillCopy", но они мне не помогли, так как по сути эти программы ни чем не отличаются от стандартных средств Windows и при разрыве сети они также выдают ошибку передачи файла.

Скриншот страницы по запросу "Копирование файлов с докачкой" Скриншот страницы по запросу "Копирование файлов с докачкой"

Выход из ситуации

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

И тут ко мне пришла простая, но в то же время рабочая идея - использовать для передачи файла Торрент-клиент. Всё что мне нужно сделать - это создать торрент файл, для этого нужно зайти в меню "Файл" - "Создать новый торрент. ", выбрать файл и создать для него торрент файл.

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

Для того, чтобы осуществить такую операцию мне нужно было, чтобы мой торрент файл передавался внутри сети без использования торрент-трекера, а только по средствам сети через торрент-клиент. Для этого нужно задействовать технологию DHT (Distributed Hash Table), которая включается в настройках торрент-клиента и обеспечивает передачу файлов внутри сети и в обход торрент-трекеров.

Что дальше?

Итак я создал торрент файл, после чего он автоматически добавился в программу uTorrent, которая является моим торрент-клиентом, и стал на раздачу, но мне это не нужно, так как я не раздаю файл кому-то, а просто хочу копировать его с поддержкой докачки, поэтому мне нужно было удалить файл из торрент-клиента. Для этого нужно нажать по нему правой кнопкой мышки и выбрать "Удалить выборочно" - "Только торрент файл"

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

Не так давно, а именно 5 июня хабрачеловек по имени alan008 задал вопрос. Чтобы не заставлять ходить за подробностями, приведу его здесь:

За несколько лет с разных трекеров (преимущественно c rutracker'а) разными клиентами (преимущественно uTorrent'ом) скачано много гигабайт разного полезного контента. Скачанные файлы впоследствии вручную перемещались с одного диска на другой, uTorrent их соответственно не видит. Многие .torrent файлы устарели сами по себе (например, велась раздача сериала путем добавления новых серий заменой .torrent файла).

Теперь сам вопрос: есть ли способ автоматически (не вручную) установить соответствие между имеющимися на компьютере .torrent файлами и содержимым, раскиданным по разным логическим дискам компьютера? Цель: удалить лишние (неактуальные) .torrent файлы, а для актуальных — поставить всё на раздачу. У кого какие идеи? :)

При необходимости (если это требуется) можно снова поместить все файлы данных в один каталог на одном логическом диске.

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

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

  1. Получилось много, но не все.
  2. По формату файла .torrent будут даны лишь необходимые пояснения.
  3. Людей, чувствительных к временами некачественному коду, прошу меня заранее простить — я знаю, что многое можно было написать лучше, оптимальнее и безглючнее.

В данном случае имеется отличный способ решения — перекачать заново. Но мы же не ищем легких путей, да и предлагался такой вариант! Итак, будем решать задачу по сложному — не скачивать.

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

  1. Найти и прочитать все .torrent-файлы;
  2. Найти в куче файлов тот, который соответствует описанному в .torrent, и переместить его в папку, соответствующую пути в .torrent.

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

Ищем торренты и читаем их

Начнем с самого простого момента — чтения .torrent.

Строение .torrent-файла довольно простое — он представляет из себя словарь в формате bencode. В данном словаре нас интересует только пара с ключом info — блок описания файлов. Этот тоже является словарем и содержит в себе информацию об имени файлов, их размере. Кроме того, как многим известно, торрент хеширует файлы не целиком, а по кускам определенной длины, которая зависит от размера этих файлов. Информация о размере этого куска также содержится в словаре info.

Для хранения информации из прочитанного файла будем использовать такой класс Torrent :

Здесь поля хранят следующую информацию:

* Name — имя торрента (вообще говоря — имя папки или имя файла)
* Files — список файлов, которые нам надо будет в дальнейшем искать
* PieceLength — размер тех самых кусочков, хеш которых нам предстоит считать
* Hash — хеш строка всех файлов
* FileName — имя .torrent-файла на диске

Теперь стоит заострить внимание на строке хеша. Она составляется очень просто. Все файлы склеиваются в один (виртуально конечно) друг за другом, образуя при этом один БОЛЬШОООООООЙ воображаемый файл. В этом воображаемом файле берем кусок длины PieceLength , считаем SHA1 хеш, кладем хеш в строку, берем следующий кусок, считаем хеш, дописываем к концу строки с хешем предыдущего куска. Т. е. это обычная конкатенация хешей всех кусков.


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

Здесь все просто: имя файла и его размер. Кроме того этот класс содержит еще одно поле — BeginFrom . Оно описывает начало этого файла в том БОЛЛЬШОООООМ воображаемом файле. Он нужен, чтобы взять правильную часть файла для подсчета хеша — ведь длина файла очень редко кратна длине куска.


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

С помощью найденной на просторах интернета библиотеки BencodeLibrary мы читаем наш .torrent-файл и выкорчевываем из него блок info:


Далее из этого блока необходимо забрать данные об имени торрента, размере куска.


В этом месте мы передаем в метод `BencodingUtils.DecodeFile` вторым параметром информацию о кодировке. Это как раз тот момент, когда пришлось добавлять один метод в библиотеку — изначально codepage-437 была вшита в код.

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

Сначала разберем .torrent с описанием одного файла.


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

Такое лучше пояснять на примере. Для файлов level_1\level_2_1\file_1.txt и level_1\level_2_2\file_2.txt , если мы захотим их раздавать, поле name будет содержать имя папки верхнего уровня ( "level_1" ), а список path для одного из файлов будет следующего вида: и для другого.

Нам для .torrent с несколькими файлами надо путь до каждого файла собрать в одну строку. Кроме того, надо хранить начало каждого файла в том БОЛЬШООООМ (не забыли, правда же?!):

Очень важно отметить, что порядок следования файлов в БОЛЬШОООООМ файле может быть любым, не обязательно по алфавиту или по размеру. Но порядок файлов в списке files будет точно таким же. Это ключевой момент для понимания принципа хеширования. Для примера, в ситуации, изображенной на первом рисунке, список файлов будет следующим: . Таким образом, считая хеш одного файла, мы знаем какой файл надо будет брать следующим.

Когда мы все это дело прочитали и посчитали — давайте создадим и вернем экземпляр Torrent :


Собирая теперь все чтение и разбор .torrent-файла воедино, получаем:

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

Ищем файлы

Мы вплотную подошли к реализации второго шага нашего алгоритма. Для этого будем использовать метод FindFiles такого вида:


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

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


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


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


Есть в коде выше три важных для пояснения момента. Начну с двух последних — вот эти строки:


Я посчитал вполне логичным убирать уже отсортированные файлы из рассмотрения, что позволит несколько сократить время выполнения поиска. Во второй строке есть конструкция .RemoveAt(i--); так как из коллекции убирается текущий элемент, то указатель надо сдвинуть назад, чтобы на следующей итерации цикла брался следующий элемент, а не через один.

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

Ну вот! Самое вкусное.

Проверка хеша

Как видно из кода выше, для проверки хеша мы передаем имя файла на диске и номер файла в списке файлов торрента. Это надо для того, чтобы не запускать поиск в списке файлов, а сразу взять его по номеру, раз он известен (еще одно "+1" циклу for ).


Теперь приступим к реализации нашего метода проверки хеша. На данном этапе мы знаем номер в списке файлов торрента и путь до файла на диске

  1. Нет необходимости дополнительно искать на диске соседние файлы;
  2. Длина куска для хеширования очень редко превышает 2-4 МБ, что дает нам еще один плюс — с точки зрения производительности и времени, докачать такие файлы намного проще, чем искать их на диске.

Когда торрент-клиент проводит хеширование файлов, он считает хеш по порядку, однако бывает так, что нет одного или нескольких файлов. Тогда торрент-клиенту надо знать какой следующий кусок брать и откуда он будет начинаться в следующем имеющемся файле. Для вычисления двух этих цифр будем использовать следующий код, в котором переменная firstChunkNumber содержит номер первого куска, который полностью содержится в данном файле, а bytesOverhead — количество байт от начала файла до начала этого куска. Для лучшего понимания этого момента взгляните на поясняющий рисунок после кода.


Ответить на вопрос «Почему номер куска разный для случая, когда его начало совпадает с началом файла, и для случая, когда кусок лежит внутри?» предлагается самостоятельно.

Сейчас, зная номер куска мы должны взять его хеш из торрента с помощью такой конструкции:


После этого, надо прочитать кусок из файла и посчитать его хеш:


Ну и самое важное — его проверить. У меня, почему-то не захотел работать ни один из методов Equals() , которые я смог найти, поэтому проверяем так:


Собирая воедино сие творение возбужденного мозга, получим метод следующего содержания:

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

Программа

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


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

По поводу производительности. Она пока что низкая: обработка 10 больших torrent-файлов заняла около 5 минут.

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

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

Так как писалась эта программа 4fun, то качество кода там немного не то, которое хотелось бы, но у меня оно работает. Данная программа не тестировалась, исправлялись только очевидные ошибки, поэтому могут быть, да что скрывать-то, есть скрытые баги. ИСПОЛЬЗУЯ ДАННУЮ ПРОГРАММУ, ВЫ ИСПОЛЬЗУЕТЕ ЕЕ НА СВОЙ СТРАХ И РИСК.

Взять исходники можно на github. Распространяется по GPLv2. Там есть архив с исполняемым файлом. Для работы требуется библиотека Bencode Library, но не оригинальная, а модифицированная мною (есть у меня в репозитарии, подключена субмодулем).

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

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

UPD2. Если у тех, кто пользовался этой утилитой, есть еще какие-то пожелания по функционалу или баг репорты, то прошу оставлять их на github в issue-трекере.

Опустим тему выбора и различий между каждым способом. Расскажу о третьем способе.

Речь пойдет не только о бестрекерных (trackerless) раздачах.
Я расскажу о трех способах создания раздачи при помощи uTorrent 3.0 (всего способов 4-5).
Никаких специальных настроек для этого не надо. Отмечу только, что для бестрекерных раздач должна быть включена DHT-сеть:
рис. 1


Способ №1 - бестрекерная раздача

Нажимаем CTRL+N и выбираем файл/папку для раздачи, т.е. указываем путь к файлу/папке, которую собираемся раздавать:
рис. 2
- в поле "Трекеры" должно быть пусто, если нет, то всё удаляем оттуда. Должна стоять галочка "Начать раздачу", и не должно быть галочки "Частный торрент" (частный торрент - это уже 4-й и 5-й способы).
Жмем "Создать и сохранить в. ".

Дожидаемся окончания процесса - появится окно с запросом:
рис. 3
- жмем "Да".
Укажите путь для сохранения торрент-файла:
рис. 4

После сохранения снова выскочит окно, показанное на рис. 2 - закройте его.
Вот что мы получили в итоге:
рис. 5

Если у вас получилось вот так:
рис. 6
- то значит это глючит uTorrent 3.0. Перейдите на любую старую версию, но рекомендую начать проверку со следующих: 1.8.2 build 15357, 1.8.5 (build 17414), 2.0.4 build 22967, 2.2.1 (build 25130 и build 25302). Помимо этого глюка в версии 3.0 есть еще несколько проблем. Поэтому я решил отказаться от всей серии 3.x.

Если у вас состояние раздачи выглядит как на рис. 5, то открываем её свойства и сверяем с тем, что есть на следующем рисунке:
рис. 7
Обратите внимание на чекбоксы, обведенные красным цветом - они должны быть именно в таком состоянии. Трекеров в поле "Трекеры" быть не должно. Все остальные параметры можете менять.

Создание раздачи окончено. Чтобы скачать раздачу на другой машине, подключенной к интернету по отдельному от раздающей машины каналу, необходимо:
1) скачать торрент-файл, запустить его в торрент-клиент
2) указать IP-адрес сида. Для этого выделите торрент, откройте вкладку "Пиры" и щелкните правой кнопкой мыши:
рис.8
- добавьте адрес раздающего торрент-клиента. Номер порта указан в настройках раздающего торрент-клиента, в разделе "Соединение". Кстати у раздающей машины, и вообще у всех участников раздачи (пиров) IP адрес может быть динамическим - это ни на что не влияет.
Если этого не сделать, то с большое долей вероятности торрент-клиенты не найдут друг друга, т.е. пир не найдёт сида.
Чтобы проверить есть ли адрес в списке пиров нажмите "Копировать список пиров" - в этом списке находятся все пиры, в т.ч. неактивные, которые не отображаются во вкладке "Пиры".

Выбираем файл/папку для раздачи, нажимаем "Создать и сохранить в. ", дожидаемся окончания процесса:
рис. 9

Когда раздача создана проверяем её свойства:
рис. 10

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

Данный способ возможен только в uTorrent, начиная с версии 3.0.
В левом нижнем углу клиента есть поле "Пepeтaщитe фaйлы для oтпpaвки":
рис. 11
- по большому счету это всё что вам надо сделать - перетащить на это поле файл/папку.
После перетаскивания появится окошко:
рис. 12
- нажмите "Создать ссылку".

По окончанию процесса появится окошко:
рис. 13

Свойства готовой раздачи должны быть такие же, как на рис. 10.

При обращении по Share-ссылке выскочит окошко - нажмите "ОК". Если нажали отмену или никакое окно не появляется, то нажмите на странице ссылку "magnet link", после чего дождитесь пока uTorrent получит торрент-файл.

Способ №5
- какая-либо вариация на тему с созданием частного торрента

Многие пользователи компьютера рано или поздно сталкивается с вопросом: «А как копировать файл или папку?». Копированием называется процесс, при котором создается точная копия данных и отправляется в нужное место (это может другой носитель, или же перемещение внутри компьютера).

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

Как скопировать файл три простых способа

Первый способ: Копирование с помощью мышки.

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

Как скопировать файл

Затем, открываем папку куда необходимо скопировать файл (это может быть другая папка на рабочем столе, или же флешка). Открыв папку (в моем случае я назвал его Урок 2), копируем файл, сделав один клик правой кнопкой (на свободное пространство), и всплывающем окне из списка выбираем вставить. И ваш документ скопирован.

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

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

Процесс копирования файлов

Второй способ: Копирование с помощью клавиатуры

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

1. Выделяем нужный файл и нажимаем клавиши Ctrl и С (на английском языке), таким образом ваш файл скопирован.

Копирование файлов с помощью клавиатуры

2. Выбираю папку или другой носитель, куда необходимо скопировать файл. Открываем. И нажимаю клавиши Ctrl и V.

Копирование файлов Ctrl и V

Все ваш файл или папка скопирована со всеми находящимися в ней данными.

Третий способ: Копирование методом перетаскивания

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

Перетаскивание файлов

Открываем таким образом, чтобы оба окна были открыты на рабочем столе, т.е. нужно уменьшить оба окна, или одно.

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

Наводим курсор мыши на нужный файл, и нажимаю левую кнопку мышки. Не отпуская левую кнопку, перетаскиваю нужный файл в планируемое место для копирования. Должна появится надпись + Копировать в «указывается наименование файла, куда копируется».

Далее, отпускаем кнопку мыши и файл начнет копироваться в указанное вами место.

Как копировать папки

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

Помимо этих способов копирования файла, также существует специальные программы, такие как CopyFolder, CopyMastro, Extention Copy и т.д., которые ускорят процесс копирования.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

папка музыка

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

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

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

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

папка музыка

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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