2010-05-27 21:51:36 +0000 2010-05-27 21:51:36 +0000
43
43
Advertisement

Как сохранить атрибуты файла при копировании одного файла в Windows?

Advertisement

В Linux мы можем просто сделать:

cp -pr directory

Как это сделать в Windows? Можно ли это сделать в проводнике Windows? Какие-нибудь предложения по инструментам с графическим интерфейсом?

Было бы лучше, если бы я сохранил NTFS разрешения и время создания/модификации/доступа. Как минимум, мне нужно сохранить дату модификации для файлов _ и_ каталогов. Копия проводника Windows не сохраняет дату модификации для каталогов.

Advertisement
Advertisement

Ответы (14)

23
23
23
2010-06-01 20:25:56 +0000

RoboCopy может сохранять mtime для каталогов с помощью переключателя /DCOPY:T, но это работает только в Vista и новее. Она также может сохранять ACL. В качестве альтернативы можно настроить параметр FastCopy для сохранения мтаймов каталогов, ACL и ADSes .

21
21
21
2012-03-05 14:33:18 +0000

… или вы можете просто сделать zip-архив (с методом сжатия, установленным только в “Store”), а затем распаковать файлы, куда вы хотели их скопировать. Атрибуты даты/времени совпадают с исходными файлами.

10
Advertisement
10
10
2018-05-26 19:48:07 +0000
Advertisement

Robocopy инструмент командной строки (поставляется с большинством версий windows) На моей машине windows 10 он расположен по адресу C:\Windows\System32

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

Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPYALL /E /R:0

  • /DCOPY:T сохраняют оригинальные Штампы времени каталогов (требуется версия XP026 или более поздняя)
  • /E: Копируйте каталоги рекурсивно, включая пустые директории
  • /R:0: не повторяйте заблокированные файлы (количество повторных попыток при неудачных копиях по умолчанию равно 1 миллиону),

  • /COPYALL: Скопируйте всю информацию о файле, (эквивалентно /COPY:DATSOU, где

Если вы only хотите сохранить метки даты и времени каталога, но делаете not, чтобы скопировать пустые подкаталоги, и делаете not, чтобы сохранить другие атрибуты, то вы можете использовать:
Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPY:T /S

где /S копирует non-empty подкаталоги

Чтобы увидеть полный синтаксис, введите robocopy /? в командную строку или посмотрите записи в блоге: https://ss64.com/nt/robocopy.html a https://techjourney.net/robocopy-syntax-command-line-switches-and-examples/

Пример команды, которую я недавно выполнил:
Robocopy D:\ C:\D_backup /DCOPY:T /COPYALL /E /R:0 /ZB /ETA /TEE /V /FP /XD D:\$RECYCLE.BIN /XD "D:\System Volume Information" /LOG:C:\D_backup_robocopy.LOG /MIR

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

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

Edit: gotcha при копировании из корневой директории (aka drive) в папку (не корневой каталог)

После выполнения команды, приведенной в примере выше, каталог не был виден! (Несмотря на то, что show hidden files и show system files были проверены в Windows 10!) Следующая команда согласно https://serverfault.com/a/455029/399723 исправила это:

attrib -h -s C:\D_backup

Альтернативно, добавление /A-:SH “удаляет скрытый атрибут из системных файлов”, таким образом, может предотвратить скрытие каталога в первую очередь, согласно https://serverfault.com/a/565804/399723 . См. также https://ss64.com/nt/robocopy.html .
Эта спуск проливает больше света на эту опцию как на решение.

Robocopy D:\ C:\D_backup /A-:SH /DCOPY:T /COPYALL /E /R:0 /ZB /ETA /TEE /V /FP /XD D:\$RECYCLE.BIN /XD "D:\System Volume Information" /LOG:C:\D_backup_robocopy.LOG /MIR

Другое ПО:

Или же вы можете загрузить GUI-версию робокопии , если не хотите использовать командную строку.

Другая утилита windows - XCopy , хотя и включена в windows 10, она устарела. Смотрите ссылку на getchas.

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

6
6
6
2010-05-27 23:04:39 +0000

В Windows.&nbsp нет простого способа сделать это; есть несколько программ, которые утверждают, что могут сохранять даты создания файлов.
Вот несколько программ, которые могут выполнить трюк http://forum.soft32.com/windows/preserve-creation-date-Copy-ftopict361820.html (Разбитая ссылка; не в Wayback Machine).

Использование только проводника Windows невозможно. Если вы посмотрите документацию по CopyFile CopyFile function (winbase.h) , то увидите, что она избегает subject.  But&nbsp CopyFile function (Windows Developer Preview) (a 2012 архив того же URL) говорит:

Семантика времени файлов

Эта статья должна документировать семантику относительно времени создания/модификации/доступа к файлу.

Время создания: если целевой файл уже существует, время его создания сохранено, в противном случае оно и nbsp;is установлено в текущее системное время.
Время последней модификации: всегда копируется из времени модификации исходного файла.
Последнее время доступа: всегда устанавливается в текущее системное время.

4
Advertisement
4
4
2011-07-26 15:54:51 +0000
Advertisement

[ Синхронизировать его! ]0x3 и 3.5 сохраняет все временные метки (файлы и папки, модификация и создание). Это единственное программное обеспечение, которое я знаю на Windows XP, которое делает это безупречно, кроме Robocopy, и я перепробовал много. Остерегайтесь, однако, он может производить поврежденные файлы с исходными файлами, загруженные с помощью программного обеспечения, как FlashGet или Orbit Downloader (в результате чего файлы имеют тот же размер, но только 25 кБ на самом деле скопирован - остальное заполняется нулями). Я спросил создателя программного обеспечения, если он может выяснить, почему, но он понятия не имел, я думаю, что это связано с таким программным обеспечением загрузки файлов в небольших пакетов (предназначенных для оптимизации скорости), и мои данные раздел является огромным фрагментированным.

Robocopy XP026 действительно входит в состав Windows Vista, но работает под Windows XP. Ищите “Robocopy XP026”, или я могу отправить файл сюда, так как найти его не так-то просто. Или вы можете установить графический интерфейс Robocopy GUI и затем выполнить поиск файла robocopy.exe в папке System32, чтобы использовать его из командной строки. У меня есть файл размером 208кБ и номером версии 5.1.2600.26.

Похоже, что есть ошибка с “режимом резервного копирования”, хотя:

http://msmvps.com/blogs/martinzugec/archive/2008/03/03/ugly-bug-in-robocopy-ignoring-security-on-file-level.aspx

Robocopy версии XP027, видимо, больше не имеет этой ошибки, но она не работает на Windows XP.

3
3
3
2010-06-01 18:32:19 +0000

RoboCopy должен иметь возможность делать это с помощью переключателя COPYALL. Вы можете взять GUI версию из Microsoft Technet .

1
Advertisement
1
1
2014-10-19 01:19:44 +0000
Advertisement

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

Метод, который я использовал раньше, был метод сжатия/закрытия папок. Хотя это наверняка займет больше времени, так как файлы не только копируются, но и обрабатываются и сжимаются, как при сжатии, так и при распаковке.

%appdata%\Microsoft\Windows\SendTo или. C:\Users\ _______ \AppData\Roaming\Microsoft\Windows\SendTo

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

1
1
1
2012-12-06 02:51:42 +0000

FastCopy может сделать это и это бесплатно.

1
Advertisement
1
1
2013-08-19 19:37:45 +0000
Advertisement
xcopy *.* C:\temp\Pics /c /d /e /h /i /k /q /r /s /x /y

Я не уверен, какой переключатель поддерживает дату файла, но это работает. Затем я закрываю каталог C:\temp\Pics, который также поддерживает даты файлов, как упоминалось ранее.

0
0
0
2012-10-14 14:50:02 +0000

Просто переместить папки и каталоги, сохранив при этом дату создания. Просто удерживайте клавишу Shift и перетащите папку в новое место (команда перемещения). Date Modified (Дата изменена) будет текущей датой, а Date Created (Дата создана) сохранит исходную дату.

0
0
0
2014-05-02 08:34:44 +0000

Я достигаю этого с помощью

rsync -avu –modify-window=3602 source_directory/ target_directory/

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

в среде cygwin внутри windows _ или_ виртуальной машине linux внутри windows с установленными дисками windows (например, с виртуальным ящиком)

NB cygwin и virtualbox оба бесплатны и позволяют вам иметь в меньшей или большей степени функциональность linux на Windows - оба они требуют некоторой настройки - в частности, virtualbox, но имеют много benenfits…..

Моя собственная проблема в том, что файлы имеют правильное время, а каталоги - нет. rsync отсортировала даты в каталогах, а также даты в файлах.

0
0
0
2014-01-01 07:59:10 +0000

Экскопия отлично подходит для этого. Просто укажите флаг /k для копирования атрибутов.

Синтаксис xcopy Источник [Назначение] [Дополнительные параметры]

Команда xcopy может копировать один или несколько файлов или деревьев каталогов из одного места в другое. Команда xcopy включена во все версии Windows, начиная с Windows 95 и заканчивая Windows 8.

0
0
0
2014-08-12 14:57:58 +0000

Эта команда копирует одну и ту же отметку времени для файлов. Обратите внимание, что она не делает одинаковую отметку времени для самих папок. Также обратите внимание, что я поместил кавычки как вокруг источника (Temp1), так и вокруг места назначения (Temp2). Это делается в случае, если в пути есть пробелы. У меня нет пробелов, но я подумал, что я должен включить это для худших сценариев.

robocopy /E /copy:DAT "C:\Temp1" "c:\Temp2"

Сохранять временные метки одинаковыми и для папок:

робокопия /E /copy:DAT /dcopy:DAT “C:\Temp1” “c:\Temp2”.

0
0
0
2013-02-11 13:33:03 +0000

Простой способ перемещения папок и сохранения Дата и Время создания используют эти утилиты http://lantechsoft.com/data-copy.html

Еще одна утилита, в которой можно сохранять даты при копировании файлов. http://technocomsolutions.com/data-copy-tool.html

Advertisement

Похожие вопросы

3
19
10
28
9
Advertisement
Advertisement