View previous topic :: View next topic |
Author |
Message |
LonerD
Joined: 04 Jan 2011 Posts: 1168 Location: Донецк
|
(Separately) Posted: Sat Jul 07, 2012 13:19 Post subject: Копирование с сохранением структуры жёстких ссылок |
|
|
Цель - копирование файлов с сохранением жёстких ссылок.
Проще объяснить на примере.
На диске D имеются три файла (на самом деле файлов и каталогов/подкаталогов гораздо больше, но для примера достаточно минимум).
d:\file1.ext
d:\file2.ext
d:\file3.ext
d:\file1.ext и d:\file2.ext являются жёсткими ссылками друг на друга (то есть физически это один файл).
d:\file3.ext побайтово совпадает с d:\file1.ext, но физически - это два разных независимых файла.
Цель - переместить все эти файлы на диск E:, получив ту же структуру.
То есть в итоге:
e:\file1.ext и e:\file2.ext - жёсткие ссылки друг на друга
e:\file3.ext - просто отдельный файл.
Существует несколько утилит, которые заменяют в целевом каталоге все одинаковые файлы на жёсткие ссылки. Но они заменяют ВСЕ файлы, а нужно на целевом диске сделать жёсткими ссылками только те файлы, которые являлись таковыми на исходном диске. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Jul 07, 2012 14:14 Post subject: |
|
|
Способ-то понятен, сейчас надо понять как читать индекс.
MVV wrote: | Ни разу таких не видел. | |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Sat Jul 07, 2012 14:41 Post subject: |
|
|
Flasher wrote: | Способ-то понятен, сейчас надо понять как читать индекс. |
Через API читается элементарно.
Flasher wrote: | MVV wrote: | Ни разу таких не видел. | |
В моем посте было без ссылки. И потом, прочти первый пост, автор ищет не программы, которые заменяют копии файлов жесткими ссылками, а программы, дублирующие структуру папок с сохранением жестких копий в её пределах. Вот таких я не видел. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Jul 07, 2012 14:55 Post subject: |
|
|
Автор написал LonerD wrote: | Существует несколько утилит, которые... | Он не писал, что ищет программы. Программы у нас вот здесь обсуждаются, так на всякий случай.
MVV wrote: | Через API читается элементарно. | Предлагаешь подключать DynamicWrapperX? |
|
Back to top |
|
|
LonerD
Joined: 04 Jan 2011 Posts: 1168 Location: Донецк
|
(Separately) Posted: Sat Jul 07, 2012 16:04 Post subject: |
|
|
Quote: | Он не писал, что ищет программы. |
Без разницы - будет ли это родной функционал какой-либо программы (если таковая вдруг существует) или скрипт.
Скрипт может быть как минимум двух вариантов:
1. Копирует/перемещает файлы и в процессе копирования/перемещения отслеживает наличие жёстких ссылок, сразу же их создавая на целевом диске.
2. Вначале просто копируются все файлы с одного диска на другой, а потом скрипт анализирует исходный и целевой диски(каталоги на дисках) и переносит структуру жёстких ссылок, заменяя в целевом соответствующие файлы на жёсткие ссылки. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Sat Jul 07, 2012 18:09 Post subject: |
|
|
Самый быстрый и корректный вариант - копировать файл за файлом, получая их индексы с помощью функции GetFileInformationByHandle и добавляя пары "оригинальный индекс-целевой путь" в упорядоченный по индексам массив, поддерживая упорядоченность. При переходе к очередному файлу проверять его индекс на присутствие в массиве бинарным поиском и, если индекс найден, вместо копирования файла создавать жесткую копию для файла, путь к которому соответствует индексу из пары. Но как это сделать с помощью скрипта, понятия не имею, возможно справится упомянутый DynamicWrapperX. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
LonerD
Joined: 04 Jan 2011 Posts: 1168 Location: Донецк
|
(Separately) Posted: Sat Jul 07, 2012 19:42 Post subject: |
|
|
Всем спасибо. Запрошенный функционал найден в Link Shell Extension (опция Smart Copy). На первый взгляд - самое оно. |
|
Back to top |
|
|
|