Хочу поведать маленькую историю. Одна программа писала свои данные в "file1.txt", а вторая программа читала данные из этого файла. Но после обновления вторая программа стала требовать данные из файла с другим именем - "file2.txt". Конечно, можно было бы копировать содержимое из "file1.txt" в "file2.txt", но, во-первых, это было бы неудобно, а во-вторых, нельзя одновременно работать с этим содержимым обеим программам. Решение кроется в жёских ссылках.
Для начала стоит почитать, что пишут на Википедии в статье "Жёсткая ссылка". В Windows Vista/7 появилась новая команда mklink:
Но в пределах одного логического диска:
Для каталогов используется опция /j, с помощью которой можно создать точку соединения:
Напомним, что точка соединения может связывать каталоги на разных дисках:
Внимание! Ссылки можно создавать на локальных дисках. Нельзя создать ссылки на сетевом диске или на сетевой диск. Подтверждение. В противном случае получите ошибку:
С помощью mklink можно создавать символьные или "мягкие" ссылки. Символьные ссылки работают одинаково как для каталогов, так и для файлов:
Можно использовать параметр /D:
Следует учесть, что:
Полезно почитать примеры применения: один и другой.
Для начала стоит почитать, что пишут на Википедии в статье "Жёсткая ссылка". В Windows Vista/7 появилась новая команда mklink:
e:\test>mklink /? Создание символической ссылки. MKLINK [[/D] | [/H] | [/J]] Ссылка Назначение /D Создание символической ссылки на каталог. По умолчанию создается символическая ссылка на файл. /H Создание жесткой связи вместо символической ссылки. /J Создание соединения для каталога. Ссылка Имя новой символической ссылки. Назначение Путь (относительный или абсолютный), на который ссылается новая ссылка. e:\test>которая, по-сути, позволяет создать новое имя файла:
e:\test>dir /b file1.txt e:\test>mklink /h mylinkfile.txt file1.txt Создана жесткая связь mylinkfile.txt <<===>> file1.txt e:\test>type mylinkfile.txt Hello, world! e:\test>echo Wow! It Works! > file1.txt e:\test>type mylinkfile.txt Wow! It Works! e:\test>del mylinkfile.txt e:\test>type file1.txt Wow! It Works! e:\test>
Но в пределах одного логического диска:
e:\test>mklink /h mylinkfile2.txt d:\treeinfo.wc Системе не удается переместить файл на другой диск.
Для каталогов используется опция /j, с помощью которой можно создать точку соединения:
e:\test>mkdir dir1 e:\test>echo content of file > dir1/file1.txt e:\test>mklink /j mylinkdir dir1 соединение создано для mylinkdir <<===>> dir1 e:\test>dir mylinkdir Том в устройстве E имеет метку Разное Серийный номер тома: 508D-73DF Содержимое папки e:\test\mylinkdir 05.05.2012 01:32 <DIR> . 05.05.2012 01:32 <DIR> .. 05.05.2012 01:32 18 file1.txt 1 файлов 18 байт 2 папок 17 713 184 768 байт свободно e:\test>type mylinkdir\file1.txt content of file e:\test>rmdir mylinkdir e:\test>type dir1\file1.txt content of file
Напомним, что точка соединения может связывать каталоги на разных дисках:
e:\test>mklink /j mylinkdir c:\ соединение создано для mylinkdir <<===>> c:\ e:\test>dir /b mylinkdir Documents and Settings PerfLogs Perl Perl64 PHP Program Files Program Files (x86) Users Windows
Внимание! Ссылки можно создавать на локальных дисках. Нельзя создать ссылки на сетевом диске или на сетевой диск. Подтверждение. В противном случае получите ошибку:
z:\>mklink /j /d .ssh c:\Users\msuslov\.ssh Local NTFS volumes are required to complete the operation.
С помощью mklink можно создавать символьные или "мягкие" ссылки. Символьные ссылки работают одинаково как для каталогов, так и для файлов:
E:\test>mklink mylinkdir dir1 символическая ссылка создана для mylinkdir <<===>> dir1 E:\test>mklink mylinkfile file1.txt символическая ссылка создана для mylinkfile <<===>> file1.txt
Можно использовать параметр /D:
E:\test>mklink /d mylinkdirD dir1 символическая ссылка создана для mylinkdirD <<===>> dir1 E:\test>mklink /d mylinkfileD file1.txt символическая ссылка создана для mylinkfileD <<===>> file1.txtНо с ним и без него получаются разные ссылки:
04.05.2012 13:54 <DIR> . 04.05.2012 13:54 <DIR> .. 04.05.2012 13:52 <SYMLINK> mylinkfile [file1.txt] 04.05.2012 13:52 <SYMLINKD> mylinkfileD [file1.txt] 04.05.2012 13:53 7 file1.txt 04.05.2012 13:54 <DIR> dir1 04.05.2012 13:54 <SYMLINK> mylinkdir [dir1] 04.05.2012 13:54 <SYMLINKD> mylinkdirD [dir1] 3 файлов 7 байт 5 папок 44 225 687 552 байт свободноС параметром /D создаются нерабочие ссылки, через которые доступ к содержимому каталогов и файлов получить мне не удалось. Зачем он нужен и что за тип ссылок с параметром /D остаётся открытым вопросом.
Следует учесть, что:
- Символьные ссылки требуют прав администратора.
- Это устаревший механизм связывания, использовавшийся в предыдущих версиях Windows.
- НО без него не обойтись, если файлы расположены на разных дисках, а ссылки нужны (для каталогов используем точки соединения).
Полезно почитать примеры применения: один и другой.
адениум дома семена и взрослые адениумы
ОтветитьУдалитьДобавление материала
разместить статью с активной ссылкой сайт с высоким ИКС