Total commander копирование файлов с сохранением пути

Обновлено: 05.07.2024

Файловая система NTFS с помощью списка контроля доступа (Access Control List, ACL) позволяет гибко организовывать и контролировать доступ к файлам и папкам в системе, раздавать разрешения пользователям или другим объектам. Однако при простом копировании или перемещении объектов ACL разрешения теряются.

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

Самый простой способ сохранить права доступа при копировании - воспользоваться Total Commander. Если вы не любите или боитесь работать в командной строке, то это ваш вариант. При копировании/переносе просто отметьте галочкой чекбокс «Copy NTFS permissions».

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

Команда XCOPY

XCOPY более продвинутый вариант команды COPY, но в отличие от последней умеет работать с сетевыми путями и копировать сведения о владельце и данные ACL объекта, то есть права доступа к файлам и папкам в системе NTFS. Синтаксис команды предельно простой:

xcopy источник [назначение] параметры

Допустим нам необходимо сделать резервную копию каталога баз данных 1С D:\bases1C на сетевой накопитель NAS с сохранением списков доступа. Вот как будет выглядеть соответствующая команда:

xcopy D:\bases1C \\NAS\backup1c /E /O

  • параметр /Е - копирует каталоги с подкаталогами, включая пустые
  • параметр /О - копирует сведения о владельце и ACL

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

ICACLS

Утилита ICACLS пришла на смену CACLS из Windows XP. Позволяет отображать и изменять списки управления доступом (Access Control Lists (ACLs) ) к файлам и папкам файловой системы, сохранять список доступа указанного объекта в файл и затем применить этот список к указанному объекту, то есть делать резервную копию прав доступа к объекту.

Приведу наиболее интересный пример использования ICACLS:

icacls c:\каталог /save name /t

icacls c:\другой_каталог /restore name

Итак, первой командой ICACLS создаем резервную копию прав доступа указанного объекта и сохраняем его в файл с именем name. Второй командой применяем резервную копию для другого объекта. Таким образом можно существенно упростить процесс переноса прав доступа с одного каталога на другой.

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

БлогNot. Как скопировать много файлов с сохранением относительных путей.

Как скопировать много файлов с сохранением относительных путей.

Для автоматической замены строк в большом количестве файлов, расположенных в большом количестве вложенных папок (например, на сделанном по шаблону статическом сайте, в котором вдруг понадобилось убрать ссылку со всех страниц) удобно использовать старенькую программу Replacer, которая легко справится с этой задачей для кодировки Windows, DOS или KOI-8R. Так как сайт программы больше не доступен, вот она в архиве ZIP, установка не нужна:

  • перейти в корневую папку локальной копии сайта, нажать Alt+F7 , найти все файлы, содержащие нужную строку (поиск с текущей папки) и вывести их во временную панель (кнопка Панель в окне поиска);
  • во временной панели нажать Alt+Shift+F2 и сохранить её содержимое как список файлов (будет предложено это сделать в папку, открытую во второй панели).

После замены нужной строки имеем массу разбросанных по разным папкам файлов, теперь нужно их куда-то переписать, чтобы затем залить по FTP на сайт (встроенный в Far клиент FTP прекрасно справляется с сохранением относительных путей при копировании, но не "заливать" же все сотни мегабайт заново, вместо 5-10 мегабайт изменённых текстов).

Я не стал искать плагин для Far'а, который позволит корректно скопировать содержимое временной панели, проще оказалось быстро написать нужный код на PHP.

Сначала сохранённый по Alt+Shift+F2 файл я перекодировал в ANSI из непонятно чего с помощью Notepad++ (почему-то Shift+F8 - выбор кодировки - на этом файле из Far не работал), затем создал на локальном хосте новую папку, поставил права 777 на папку со скриптом на локалхосте (пункт 3 и тут). Если файл со списком называется 1.txt и лежит в одной папке со скриптом, скрипт может выглядеть так:

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

Потом мне осталось залить файлы из папки скрипта по FTP на сайт.

Наверняка есть способы лучше, например, должен быть подобный плагин для Total Commander - но ставить ради этого Total поленился.

Открытие файлов для последующей работы с ними - самое рутинное действие на персональном компьютере. В графическом интерфейсе операционной системы такая операция выполняется максимально просто. Достаточно кликнуть 2 раза по иконке файла и он откроется в ассоциированной с этим типом файлов программе.

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

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

Наиболее типичный и простой случай - открытие файла из папки интернет-загрузок, путь к которой обычно такой:

C:\Users\Имя пользователя\Downloads\имя файла

Если же файл расположен по длинному пути, например:

C:\Users\Имя пользователя\Мои файлы\Работа\Заказы\2017\имя файла

то долистать до файла придется уже в 5 кликов мыши.

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

Как скопировать путь к файлу в Проводнике

Первый способ

Открываем Проводник, выбираем файл и во вкладке "Главная" нажимаем "Скопировать путь".

Копирование пути к файлу в Проводнике (первый способ)

Второй способ

Нажав на SHIFT , кликаем правой кнопкой мыши. В выпадающем контекстном меню выбираем "Копировать как путь".

Копирование пути к файлу в Проводнике (второй способ)

Все. Путь к файлу скопирован и теперь при открытии файла листать до него не придется, просто вставляем путь к файлу и нажимаем "Открыть". Например, так это делается в Блокноте.

Вставка пути к файлу в программе Блокнот

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

Первый способ

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

Копирование пути к файлу в Total Commander (первый способ)

Второй способ

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

Копирование пути к файлу в Total Commander (второй способ)

Все, путь к файлу также скопирован.

Копирование пути папок в Проводнике и Total Commander происходит аналогичным образом, только выделяется/выбирается папка, а не файл. И соответственно, чтобы скопировать пути к нескольким файлам/папкам, необходимо выделить сразу несколько файлов (или папок).

Длинные пути Windows

Описание проблемы длинных путей

Раньше имена файлов в Windows ограничивались форматом 8.3 - всего восемь символов для имени файла и три для расширения. С появлением Windows 95 Microsoft сняла этот предел и позволила использовать гораздо более длинные имена.

Тем не менее, файловая система Windows по-прежнему накладывает некоторые ограничения, например, какие символы могут использоваться в именах файлов и общую длину путей. Некоторое время максимальная длина пути составляла 260 символов, но с появлением Windows 10, часть ограничений начала потихоньку уходить, например для приложений и появилась возможность отключить проверку MAX_PATH и использовать длинные пути без префикса \\?\.

Что интересно, значение в 260 символов обусловлено значением MAX_PATH Win32 API. У файловой системы NTFS максимальная длина пути ″немного″ больше и составляет 32767 символа. Для обхода ограничений Win32 API некоторые приложения используют формат UNC, указывая абсолютный путь с префиксом \\?\, например так:

Хочу отметить, что на период ноября 2020 года и последней версий Windows 10 1909, в ПРОВОДНИКЕ Windows до сих пор есть ограничения в 260 символов, и мы все слышим обещания, что их исправят

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

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

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

Тоже самое при копировании в папку, так же выскакивает "Слишком длинный целевой путь".

Слишком длинный целевой путь, решаем за минуту

Вот ошибка при извлечении архива в сетевую папку:

Не удается завершить извлечение. Слишком длинный конечный путь. Переименуйте сжатую ZIP-папку и повторите попытку

Не удается завершить извлечение. Слишком длинный конечный путь. Переименуйте сжатую ZIP-папку и повторите попытку

Методы снимающие ограничения на длину пути в Windows

  • Через групповую или локальную политику Windows (Применимо только к Windows 10 и Windows Server 2016 и выше)
  • Через реестр Windows (Применимо только к Windows 10 и Windows Server 2016 и выше)
  • Через сторонние утилиты 7-Zip, Far, TotalCommander (Применимо ко всем версиям Windows)
  • Использование силинков (символических ссылок) (Применимо ко всем версиям Windows)
  • Через сетевой диск, для укорачивания пути
  • Утилиты xcopy, robocopy

Нюансы длинных путей в приложениях

Есть один нюанс. Этот новый параметр (имеется ввиду та политика и ключ реестра) не обязательно будет работать со всеми существующими приложениями, но он будет работать с большинством. В частности, любые современные приложения должны работать нормально, как и все 64-битные приложения. Старые 32-разрядные приложения должны быть применимы для работы, что на самом деле просто означает, что разработчик указал в файле манифеста приложения, что приложение поддерживает более длинные пути. Большинство популярных 32-битных приложений не должно вызывать проблем. Тем не менее, вы ничем не рискуете, пробуя настройку. Если приложение не работает, единственное, что произойдет, это то, что оно не сможет открывать или сохранять файлы, сохраненные в местах, где полный путь превышает 260 символов.

Если вы разработчик, то чтобы ваше приложение имело возможность работать с длинными путями Windows, в манифесте обязательно указывайте следующие настройки:

<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
</windowsSettings>
</application>

Как в Windows 10 отключить ограничение на длину пути в 260 символов через политику

Чем примечателен данный метод, так это тем, что неподготовленных пользователей он не вынуждает выполнять команды или производить правку реестра, тут все в графическом виде. Так же если у вас есть домен Active Directory и вы хотите массово убрать ошибки "Слишком длинный целевой путь" или "Слишком длинный конечный путь" в приложениях и запретить им проверять MAX_PATH и использовать длинные пути без префикса \\?\, то групповые политики вам это помогут.

Еще раз напоминаю, что данный метод подойдет и для серверных версий, даже самых современных Windows Server 2019

Покажу для начала, как делать через локальную политику, открываете окно "Выполнить" в котором пишите gpedit.msc.

Хочу отметить, что для Windows 10 Home данный метод работать не будет, там просто нет редактора локальных политик, там придется лезть в реестр Windows

Как в Windows 10 отключить ограничение на длину пути в 260 символов

Далее идем по пути:

Конфигурация компьютера - Административные шаблоны - Система - Файловая система (Computer configuration - Administrative templates - System - Filesystem)

Найдите тут параметр "Включить длинные пути Win32 (Enable Win32 long paths)", по умолчанию он отключен, и я честно не понимаю почему. Активируйте его.

Включить длинные пути Win32

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

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

Включение поддержки длинных путей через реестр

Данный метод ни чуть не сложнее предыдущего и делает все то же самое, включает поддержку длинных путей свыше 256 символов для приложений Windows. Когда вы что-то меняете через редактор политик, по сути меняются настройки в реестре, это нужно помнить и знать. Сейчас я вам покажу какой ключ меняется. Откройте редактор реестра Windows. Перейдите в раздел:

тут вам необходимо найти параметр LongPathEnabled, которому для активации поддержки длинных путей и изменения ограничений в MAX_PATH, нужно задать значение "1". Тут потребуется перезагрузка.

Включение поддержки длинных путей через реестр Windows. LongPathEnabled

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

Ключи реестра для активации MAX_PATH

Еще вы можете сделать такую поддержку и для конкретного пользователя по пути:

Если там нет ключа LongPathsEnabled, то создайте его, тип DWORD (32 бита) и значение 1.

Как в Windows 10 отключить ограничение на длину пути в 260 символов через PowerShell

Не все люди готовы копаться в редакторах и реестрах, им нужно быстрое решение, одним из таких является PowerShell. В оболочке выполните команду для активации параметра "Включить длинные пути Win32 (LongPathEnabled)". Не забываем перезагрузить систему.

Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem -Name LongPathsEnabled -Value 1

Как в Windows 10 отключить ограничение на длину пути в 260 символов через PowerShell

Как удалять, копировать, переносить файлы и папки при ошибке с длинными путями

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

Как в Windows 10 отключить ограничение на длину пути в 260 символов через командную строку

Запустите командную строку в режиме администратора и введите:

reg add "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1

Как в Windows 10 отключить ограничение на длину пути в 260 символов через командную строку

Обход ограничений длинных путей через 7zFM

Исправляем Слишком длинный путь к источнику через 7zFM

Откройте 7zFM.exe и перейдите в нем в конечную папку вашего пути.

Для создания новой папки нажмите клавишу F7.

Создание папки в 7zFM.exe

Задайте необходимое вам имя, в моем примере это будет "БОльше 260 Microsot".

Указание имени у создаваемой папки в 7zFM.exe

В результате у нас создалась новая папка и заметьте 7zFM не ругнулся на наличие длинных путей, он их игнорирует просто и все.

Успешно созданная папка через 7zFM.exe

Проверяем, что директория доступна через проводник Windows.

Обход ограничений длинных путей через 7zFM

Все прекрасно отображается. Теперь я думаю вы легко сможете переносить, копировать, удалять файлы через 7zFM, когда вам проводник Windows ругается на наличие длинных путей.

Обход ограничений длинных путей через 7zFM

Как обойти ограничение длинных путей через символьную ссылку

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

  • Путь где будет лежать файл символической ссылки - в моем примере C:\короткий путь
  • Длинный путь - C:\Share\WINDOW

Как обойти ограничение длинных путей через символьную ссылку

Нам поможет команда mklink, где ключ /D создает ссылку на каталог

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

Создание символической ссылки для решения проблемы длинных путей

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

Как в Windows 10 отключить ограничение на длину пути в 260 символов через PowerShell

Как обойти ограничение длинных путей через сопоставление subst

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

Как обойти ограничение длинных путей через сопоставление subst

У вас в проводнике Windows должен появиться диск с данной буквой, если его нет, то прочитайте статью "Не появляется диск после команды subst" или просто в проводнике вбейте W:\ и нажмите Enter.

Как устранить проблему длинных путей Windows

Как обойти ограничение длинных путей через монтирование сетевого диска

В командной строке используйте команду net use, далее буква диска, которую мы присваиваем и в самом конце путь:

Создание сетевого диска ведущего на длинный путь Windows

Как видим все прекрасно отработало и диск появился.

Как обойти ограничение длинных путей через монтирование сетевого диска

Использование утилит Far или Total Commander

После включения параметра "Включить длинные пути Win32" данные утилиты в 100% случаев помог вам произвести любые действия с папками или файлами на любом длинном пути в системе Windows. Откройте Total Commander и создайте для примера папку в каталоге с длинным путем, напоминаю для этого нужно нажать F7.

Использование утилит Far или Total Commander

Как видите все прекрасно создается, удаляется или копируется при желании.

Главное предназначение Total Commander — работа с папками и файлами. Программа располагает множеством инструментов, при этом с некоторыми его возможностями не так просто разобраться.

Выделение файлов

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

Выделение файлов

Выделение файлов

Есть люди, которым правая клавиша мыши неудобна. Чтобы заменить ее левой, в настройках следует перейти в «Основные операции» и выделить галочкой «Левой кнопкой, как в Windows».

Настройки выделения

Настройки выделения

Над рабочей областью программы есть меню «Выделение», там можно обозначить все файлы в каталоге или определенную группу. Сделать это легко, используя горячие клавиши. Выделение группы — комбинация «Num+», выделение всех файлов — «Ctrl+Num+».

В том же меню можно убрать выделение, в случае необходимости операцию легко произвести горячими клавишами: снять выделение группы файлов — комбинация «Num–», снять все выделение — «Ctrl+Num–».

Выпадающее меню

Выпадающее меню

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

Для выполнения этой операции необходимо открыть в одной панели директорию с теми файлами и папками, которые следует скопировать, а в другой — ту, в которую их требуется вставить. Нужные файлы и папки надо выделить и нажать клавишу «F5» (на нижней панели есть также отдельная кнопка «Копировать»). Откроется окно, где следует подтвердить действие. В нем же можно вручную прописать другой путь для копирования, а также выбрать лишь определенный тип файлов, нуждающихся в копировании.

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

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

Выполнить описанное выше действие можно и привычным способом — перетянув файлы с помощью мыши из одной панели в другую. Есть здесь еще одна полезная функция: если нажать сочетание клавиш «Shift+F5», файлы одновременно скопируются и переименуются.

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

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

Перемещение файлов

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

Перемещение файлов

Перемещение файлов

Как и при копировании, сочетание «Shift+F6» дает возможность переместить файлы под иным названием.

Удаление файлов

Удаление файлов и папок в «Корзину» осуществляется нажатием на «F8», эта кнопка также присутствует на нижней панели. Если есть желание, можно воспользоваться более привычной клавишей — «Delete».

Удаление файлов

Удаление файлов

Для полного удаления следует использовать комбинацию «Shift+F8» либо «Shift+Delete».

Переименование файлов

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

Переименование файлов

Переименование файлов

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

Как найти файлы

Чтобы открыть окно поиска, следует нажать комбинацию «Alt+F7» или найти эту функцию в главном меню, выбрав пункт «Команды».

Выпадающее меню

Выпадающее меню

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

Поиск файлов

Поиск файлов

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

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