Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Копирование с сохранением структуры жёстких ссылок

 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Sat Jul 07, 2012 13:19    Post subject: Копирование с сохранением структуры жёстких ссылок Reply with quote

Цель - копирование файлов с сохранением жёстких ссылок.

Проще объяснить на примере.
На диске 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
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sat Jul 07, 2012 14:04    Post subject: Reply with quote

Ни разу таких не видел. Это надо составить список файлов в исходной папке и их индексов, а потом в папке назначения заменить жесткими ссылками файлы, индексы которых в исходной папке встречаются более 1 раза.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Jul 07, 2012 14:14    Post subject: Reply with quote

Способ-то понятен, сейчас надо понять как читать индекс.

MVV wrote:
Ни разу таких не видел.
Laughing
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sat Jul 07, 2012 14:41    Post subject: Reply with quote

Flasher wrote:
Способ-то понятен, сейчас надо понять как читать индекс.

Через API читается элементарно.

Flasher wrote:
MVV wrote:
Ни разу таких не видел.
Laughing

В моем посте было без ссылки. И потом, прочти первый пост, автор ищет не программы, которые заменяют копии файлов жесткими ссылками, а программы, дублирующие структуру папок с сохранением жестких копий в её пределах. Вот таких я не видел.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Jul 07, 2012 14:55    Post subject: Reply with quote

Автор написал
LonerD wrote:
Существует несколько утилит, которые...
Он не писал, что ищет программы. Программы у нас вот здесь обсуждаются, так на всякий случай.

MVV wrote:
Через API читается элементарно.
Предлагаешь подключать DynamicWrapperX?
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Sat Jul 07, 2012 16:04    Post subject: Reply with quote

Quote:
Он не писал, что ищет программы.

Без разницы - будет ли это родной функционал какой-либо программы (если таковая вдруг существует) или скрипт.
Скрипт может быть как минимум двух вариантов:
1. Копирует/перемещает файлы и в процессе копирования/перемещения отслеживает наличие жёстких ссылок, сразу же их создавая на целевом диске.
2. Вначале просто копируются все файлы с одного диска на другой, а потом скрипт анализирует исходный и целевой диски(каталоги на дисках) и переносит структуру жёстких ссылок, заменяя в целевом соответствующие файлы на жёсткие ссылки.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sat Jul 07, 2012 18:09    Post subject: Reply with quote

Самый быстрый и корректный вариант - копировать файл за файлом, получая их индексы с помощью функции GetFileInformationByHandle и добавляя пары "оригинальный индекс-целевой путь" в упорядоченный по индексам массив, поддерживая упорядоченность. При переходе к очередному файлу проверять его индекс на присутствие в массиве бинарным поиском и, если индекс найден, вместо копирования файла создавать жесткую копию для файла, путь к которому соответствует индексу из пары. Но как это сделать с помощью скрипта, понятия не имею, возможно справится упомянутый DynamicWrapperX.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Sat Jul 07, 2012 19:42    Post subject: Reply with quote

Всем спасибо. Запрошенный функционал найден в Link Shell Extension (опция Smart Copy). На первый взгляд - самое оно.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group