3

Я нашел эту статью базы знаний, которая объясняет название темы. Но моя проблема в том, что когда я использую команду "xcopy"; он только копирует содержимое каталога в новое место, но не весь каталог, как в дистрибутивах Linux.

Например: если я наберу "xcopy c:\folder1 d:\newfolder"; затем он копирует содержимое из c:\folder1 в d:\newfolder, но не в folder1. Я тихо запутался, как в том, как мне этого добиться. Пожалуйста, сообщите мне об этом.

Заранее спасибо.

3 ответа3

7

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

Я не мог скопировать сам каталог, но мне удалось скопировать все содержимое в нем без потери разрешения. Так вот как

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

xcopy c:\source_folder_name e:\destination_folder_name /O /X /E /H /K
  • /E - Копирует папки и подпапки, включая пустые.
  • /H - Копирует скрытые и системные файлы.
  • /K - Копирует атрибуты. Как правило, Xcopy сбрасывает атрибуты только для чтения.
  • /O - Копирует владельца файла и информацию ACL.
  • /X - Копирует настройки аудита файлов (подразумевается /O).

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

Предполагая, что путь вашей командной строки - C:/..

robocopy c:\source_folder_name e:\destination_folder_name /MIR /LOG:log.txt
  • /MIR - Зеркальное копирование файлов и копирование / изменение / удаление между источником и местом назначения.
  • / LOG - Создает файл журнала процесса

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

Как только robocopy сделал свое дело, я однажды проверил свойства, чтобы убедиться, что оба подсчитывают. Небесный да! это подсчитывалось, и я проверил журнал, чтобы увидеть, какой файл не был скопирован. Как я и подозревал, это был просто thumbs.db и несколько других файлов, которые были опущены.

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

Надеюсь это поможет!

0

Да, лучший вариант - снова указать имя файла ... Например, Мне нужно скопировать папку C:\Inetpub в другую папку или диск.

XCOPY "C:\Inetpub" "C:\DDRIVE\Inetpub" /o /x /e /h /k

После того, как вы нажмете Enter, он спросит: «Inetpub Укажите имя каталога или имя файла на цели?». Нажмите F для файла и нажмите D для каталога. Вы можете нажать D здесь. Это создаст новый каталог и скопирует все подпапки и файлы с одинаковыми разрешениями из источника.

0

Единственный способ - снова указать folder1. Ключ /I остановит XCOPY, задавая глупые вопросы о том, является ли folder1 файлом или каталогом. /E для рекурсии.

xcopy /I /E c:\folder1 d:\newfolder\folder1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .