Файловая система не поддерживает символьные ссылки
Когда я хочу передать файлы со своего локального жесткого диска на мою карту флэш-памяти, я продолжаю получать эту ошибку:
Я не знаю, каково это, я нуждаюсь в помощи с передачей файлов.
Перетаскивание, не работает на меня, ошибка появляется. Щелкните правой кнопкой мыши по файлу и выберите копию, и затем щелкните правой кнопкой мыши по карте флэш-памяти и выберите Пасту, не работает, я все еще получаю ту же самую ошибку.
Если копирование сделано в некотором терминале раковины (т.е. удар), то , CP можно явно сказать скопировать файл, на который указывает связь с - dereference вместо самой связи. Поведение по умолчанию , CP должно скопировать файлы, перейдя по их ссылкам, но у многих браузеров графических файлов, кажется, есть поведение по умолчанию попытки скопировать связи и обычно сохранение большинства признаков.
Пример
Факт, который someLink является связью, показывают l флаг в первом положении продукции листинга (и 'd' определяет справочник).
drwxrwxr-x. 2 user group 4096 Aug 17 17:17 someDirectory
lrwxrwxrwx. 1 user group 13 Aug 17 17:17 someDirLink -> someDirectory
-rw-rw-r--. 1 user group 32 Aug 17 17:01 someFile.txt
lrwxrwxrwx. 1 user group 12 Aug 17 17:12 someLink -> someFile.txt
The file contains the content, and the link points to the file, but can be used in nearly any manner the file could be. (Note the link file size vs the text file size: 32 Bytes vs 12 Bytes.)
Некоторое содержание для испытательного файла.
Некоторое содержание для испытательного файла.
Во-первых, копируя связь со справочником. Тогда копируя файл к справочнику, через связь. (Ниже также показывает, что ссылки каталога работают подобным образом к связям файла.):
lrwxrwxrwx. 1 user group 12 Aug 17 17:12 newCopy -> someFile.txt
-rw-rw-r--. 1 user group 32 Aug 17 17:36 newCopy.txt
Осторожность
Связи могут быть сделаны указать на полный путь или относительный путь. Так как этот пример использовал соединение на основе относительного пути цели, находящейся в том же самом справочнике как создаваемая связь, связь была разорвана, когда это было скопировано к новому справочнику.
кошка: someDirLink/newCopy: Никакой такой файл или каталог
Некоторое содержание для испытательного файла.
Символьная ссылка - файл, который указывает на другой файл, своего рода псевдоним для filepath. Это не совместимо с ТОЛСТЫМИ 32 файловыми системами, обычно находимыми на Картах памяти.
Чтобы найти символьную ссылку, можно открыть терминал и сделать ls - al в справочнике, у вас есть проблемы с - у символьной ссылки будет l как первый характер в листинге (где у справочников есть d ). Или иначе, можно сделать , находят ДИРЕКТОРА - тип l , где , ДИРЕКТОР является справочником, который мог бы (косвенно) содержать символьные ссылки ( . в порядке также).
Если вы хотите скопировать содержание: ls - al LINK , где СВЯЗЫВАЮТ , является вашей связью, скажет вам, где это указывает на (если , ССЫЛКА является справочником, необходимо будет удалить заключительный разрез в случае, если у вас есть один). Просто скопируйте это.
N.B.: ls-l обычно достаточен, я просто добавил , чтобы показать скрытые файлы, имя которых начинается с точки - для случая, где связь - скрытый файл.
But, if you are afraid of the terminal: in Nautilus (the file browser), the icons of links are marked by a small arrow on the bottom right (but not all icons marked like that are links). If you right click on the icon and select Properties , if it is a link, its Type will start with Link to , and its Link target will tell you where the real stuff is (unless that is a link itself, in which case you will have to follow the chain).
Когда я хочу перенести файлы с локального жесткого диска на флэш-накопитель, я получаю эту ошибку:
Я не знаю, что это такое, мне нужна помощь с передачей файлов.
Перетаскивание, у меня не работает, появляется ошибка. Щелкните правой кнопкой мыши по файлу и выберите "Копировать", затем щелкните правой кнопкой мыши на дисководе и выберите "Вставить не работает", я все еще получаю ту же ошибку.
Символическая ссылка - это файл, который указывает на другой файл, своего рода псевдоним для пути к файлу. Он не совместим с файловой системой FAT-32, обычно встречающейся на USB-накопителях.
Чтобы найти символическую ссылку, вы можете открыть терминал и сделать ls -al в каталоге, с которым у вас возникли проблемы - символическая ссылка будет иметь l в качестве первого символа в списке (где каталоги имеют d ). Или вы можете сделать find DIR -type l где DIR каталог, который может (косвенно) содержать символические ссылки ( . тоже нормально).
Если вы хотите скопировать содержимое: ls -al LINK , где LINK ваша ссылка, скажет вам, куда она указывает (если LINK это каталог, который вам придется удалить, если он у вас есть). Просто скопируйте это.
NB: ls -l Обычно достаточно, я просто добавил a для отображения скрытых файлов, имя которых начинается с точки - для случая, когда ссылка представляет собой скрытый файл.
Но, если вы боитесь терминала: в Nautilus (файловом браузере) значки ссылок отмечены маленькой стрелкой внизу справа (но не все значки, помеченные как ссылки). Если вы щелкните правой кнопкой мыши на значок и выберите Properties , если это ссылка, его Type начнется с Link to , И его Link target скажет вам, где находится реальный материал (если это не сама ссылка, в этом случае вам придется следовать по цепочке).
Если копирование выполняется в каком-то терминале оболочки (например, в bash), то cp может быть явно сказано, чтобы скопировать файл, на который указывает ссылка с --dereference вместо самой ссылки. Поведение по умолчанию cp копировать файлы, следуя их ссылкам, но многие графические браузеры файлов, по-видимому, по умолчанию пытаются копировать ссылки и обычно сохраняют большинство атрибутов.
пример
Дело в том, что someLink является ссылкой, показывается l флаг в первой позиции вывода списка (а `d 'обозначает каталог).
drwxrwxr-x. 2 user group 4096 Aug 17 17:17 someDirectory
lrwxrwxrwx. 1 user group 13 Aug 17 17:17 someDirLink -> someDirectory
-rw-rw-r--. 1 user group 32 Aug 17 17:01 someFile.txt
lrwxrwxrwx. 1 user group 12 Aug 17 17:12 someLink -> someFile.txt
Файл содержит содержимое, и ссылка указывает на файл, но может использоваться практически любым способом, которым может быть файл. (Обратите внимание, что размер файла ссылки и размер текстового файла: 32 байта против 12 байтов.)
Some content for the test file.
Some content for the test file.
Сначала копируем ссылку на каталог. Затем скопируйте файл в каталог, перейдя по ссылке. (Ниже также показано, что ссылки на каталоги работают аналогично ссылкам на файлы.):
lrwxrwxrwx. 1 user group 12 Aug 17 17:12 newCopy -> someFile.txt
-rw-rw-r--. 1 user group 32 Aug 17 17:36 newCopy.txt
предосторожность
Можно сделать ссылки, указывающие на полный или относительный путь. Поскольку в этом примере использовалась ссылка на основе относительного пути к цели, находящейся в том же каталоге, что и создаваемая ссылка, ссылка была разорвана при копировании в новый каталог.
cat: someDirLink/newCopy: No such file or directory
Я использую Ubuntu 12.04. Когда я пытаюсь создать жесткую ссылку для любой директории, она не работает. Я могу создать жесткие ссылки для файлов внутри границы файловой системы. Я знаю причину, по которой мы не можем создавать жесткие ссылки для файлов за пределами файловой системы.
Я попробовал эти команды:
Я просто хочу знать причину этого. Это одинаково для всех дистрибутивов GNU/Linux и Unix (BSD, Solaris, HP-UX, IBM AIX) или только в Ubuntu или Linux?
Как тогда могут работать мягкие ссылки на каталоги?
Путь, который может содержать программные ссылки и даже программно-связанные циклы каталогов, часто используется только для идентификации и открытия файла. Его можно использовать как обычный линейный путь.
Но есть и другие ситуации, когда для сравнения файлов используются пути. В этом случае символические ссылки в пути могут быть разрешены в первую очередь, преобразуя его в минимальное и обычно согласованное представление, создавая канонический путь:
Это возможно, потому что все программные ссылки могут быть расширены до путей без ссылки. После этого со всеми мягкими ссылками в пути, оставшийся путь является частью дерева, где путь всегда однозначен.
Команда readlink Можно найти путь к своему каноническому пути:
4 ответа
Они позволяют создавать петли
Жесткая ссылка на каталог может ссылаться на самого родителя, который создает цикл файловой системы. Например, эти команды могут создать цикл с обратной ссылкой l :
Файловая система с циклом каталогов имеет бесконечную глубину:
Избегать бесконечного цикла при обходе такой структуры каталогов довольно сложно (хотя, например, POSIX требует find чтобы избежать этого).
Файловая система с такой жесткой ссылкой больше не является деревом, потому что дерево по определению не должно содержать цикл.
Использование ссылок в Linux
Теоретические отличия вы знаете, но осталось закрепить все это на практике, поэтому давайте приведем несколько примеров работы со ссылками в Linux. Для создания символических ссылок существует утилита ln. Ее синтаксис очень прост:
$ ln опции файл_источник файл_ссылки
Рассмотрим опции утилиты:
- -d - разрешить создавать жесткие ссылки для директорий суперпользователю;
- -f - удалять существующие ссылки;
- -i - спрашивать нужно ли удалять существующие ссылки;
- -P - создать жесткую ссылку;
- -r - создать символическую ссылку с относительным путем к файлу;
- -s - создать символическую ссылку.
Символические ссылки
Символические ссылки более всего похожи на обычные ярлыки. Они содержат адрес нужного файла в вашей файловой системе. Когда вы пытаетесь открыть такую ссылку, то открывается целевой файл или папка. Главное ее отличие от жестких ссылок в том, что при удалении целевого файла ссылка останется, но она будет указывать в никуда, поскольку файла на самом деле больше нет.
Вот основные особенности символических ссылок:
- Могут ссылаться на файлы и каталоги;
- После удаления, перемещения или переименования файла становятся недействительными;
- Права доступа и номер inode отличаются от исходного файла;
- При изменении прав доступа для исходного файла, права на ссылку останутся неизменными;
- Можно ссылаться на другие разделы диска;
- Содержат только имя файла, а не его содержимое.
Теперь давайте рассмотрим жесткие ссылки.
Создание жестких ссылок
Снова создайте файл source с произвольным текстом:
echo "текст текст текст текст" > source
$ cat source
Теперь создадим жесткую ссылку Linux. Для этого достаточно вызвать утилиту без параметров:
ln source hardlink
Посмотрите содержимое файла:
Данные те же самые, а если мы посмотрим вывод утилиты ls, то увидим что inode и права доступа тоже совпадают:
Если для одного из файлов поменять разрешения, то они изменяться и у другого. Теперь удалите исходный файл:
Затем посмотрите содержимое:
Как видите, ничего не произошло и ссылка по-прежнему указывает на нужный участок диска, это главное отличие жесткой ссылки от символической. Мы можем сделать вывод, что жесткая ссылка linux это обычный файл. Каждый файл имеет как минимум одну ссылку, но для некоторых мы можем создать несколько ссылок.
Они умножают файлы
Файлы идентифицируются путями после разрешения символических ссылок. Так
это разные файлы.
Существует бесконечно много дальнейших путей к файлу. Конечно, они одинаковы по количеству инодов. Но если вы явно не ожидаете циклов, нет причин проверять это.
Жесткая ссылка на каталог также может указывать на дочерний каталог или каталог, который не является ни дочерним, ни родительским. В этом случае файл, являющийся дочерним по отношению к ссылке, будет реплицирован на два файла, идентифицированных двумя путями.
Жесткие ссылки
Этот тип ссылок реализован на более низком уровне файловой системы. Файл размещен только в определенном месте жесткого диска. Но на это место могут ссылаться несколько ссылок из файловой системы. Каждая из ссылок - это отдельный файл, но ведут они к одному участку жесткого диска. Файл можно перемещать между каталогами, и все ссылки останутся рабочими, поскольку для них неважно имя. Рассмотрим особенности:
- Работают только в пределах одной файловой системы;
- Нельзя ссылаться на каталоги;
- Имеют ту же информацию inode и набор разрешений что и у исходного файла;
- Разрешения на ссылку изменяться при изменении разрешений файла;
- Можно перемещать и переименовывать и даже удалять файл без вреда ссылке.
Создание символических ссылок
Сначала создайте папку test и перейдите в нее:
mkdir test && cd test
Затем создайте файл с именем source с каким-либо текстом:
echo "текст текст текст текст" > source
$ cat source
Файл готов, дальше создадим символическую ссылку Linux, для этого используется команда ln с опцией -s:
ln -s source softlink
Попробуем посмотреть содержимое файла по ссылке:
Как видите, нет никакой разницы между ней и исходным файлом. Но утилита ls покажет что это действительно ссылка:
Несмотря на то, что содержимое одинаковое, здесь мы видим, что адрес иноды и права доступа к файлам отличаются, кроме того, явно показано что это символическая ссылка Linux.
Теперь удалите исходный файл и посмотрите что будет:
Вы получите ошибку, что такого файла не существует, потому что мы действительно удалили исходный файл. Если вы удалите ссылку, то исходный файл останется на месте.
Мягкие ссылки отличаются от того, что использует файловая система
Мягкая ссылка не может вызвать все проблемы, потому что она отличается от ссылок внутри файловой системы. Его можно отличить от жестких ссылок и при необходимости разрешить по пути без символических ссылок.
В некотором смысле добавление символических ссылок не меняет основную структуру файловой системы - она сохраняет ее, но добавляет дополнительную структуру, например уровень приложения.
Когда я хочу перенести файлы с локального жесткого диска на флэш-накопитель, я получаю эту ошибку:
Я не знаю, что это, мне нужна помощь с передачей файлов. [ 112]
Перетаскивание, у меня не работает, появляется ошибка. Щелкните правой кнопкой мыши по файлу и выберите «Копировать», затем щелкните правой кнопкой мыши на дисководе и выберите «Вставить не работает», я все еще получаю ту же ошибку.
Символическая ссылка - это файл, который указывает на другой файл, своего рода псевдоним для пути к файлу. Он не совместим с файловой системой FAT-32, обычно встречающейся на USB-накопителях.
Чтобы найти символическую ссылку, вы можете открыть терминал и сделать ls -al в каталоге, с которым у вас возникли проблемы - символическая ссылка будет иметь l в качестве первого символа в списке (где каталоги имеют d ). Или же вы можете создать find DIR -type l , где DIR - это каталог, который может (косвенно) содержать символические ссылки ( . тоже хорошо).
Если вы хотите скопировать контент: ls -al LINK , где LINK - ваша ссылка, сообщит вам, куда она указывает (если LINK - каталог, вам придется удалить последний слеш, если у вас есть один). Просто скопируйте это.
N.B .: ls -l обычно достаточно, я просто добавил a для отображения скрытых файлов, имя которых начинается с точки - для случая, когда ссылка является скрытым файлом.
Но, если вы боитесь терминала : в Nautilus (файловый браузер) значки ссылок отмечены маленькой стрелкой в правом нижнем углу (но не все значки, отмеченные как ссылки). Если щелкнуть правой кнопкой мыши значок и выбрать Properties , если это ссылка, его Type начнется с Link to , а его Link target скажет вам, где находится реальный материал (если только это не ссылка). , в этом случае вам придется следовать по цепочке).
Если копирование сделано в некотором терминале оболочки (т.е. удар), то cp может быть явно сказан скопировать файл, на который указывает ссылка с --dereference , вместо самой ссылки. Поведение по умолчанию cp должен скопировать файлы, перейдя по их ссылкам, но много браузеров графических файлов, кажется, имеют поведение по умолчанию попытки скопировать ссылки и обычно сохранение большинства атрибутов.
Пример
Факт это someLink ссылка, показан l флаг в первом положении вывода списка (и 'd' определяет каталог).
drwxrwxr-x. 2 user group 4096 Aug 17 17:17 someDirectory
lrwxrwxrwx. 1 user group 13 Aug 17 17:17 someDirLink -> someDirectory
-rw-rw-r--. 1 user group 32 Aug 17 17:01 someFile.txt
lrwxrwxrwx. 1 user group 12 Aug 17 17:12 someLink -> someFile.txt
Файл содержит содержание, и ссылка указывает на файл, но может использоваться почти любым способом, которым мог быть файл. (Отметьте размер файла связей по сравнению с размером текстового файла: 32 байта по сравнению с 12 байтами.)
Some content for the test file.
Some content for the test file.
Во-первых, копируя ссылку на каталог. Затем копируя файл в каталог, через ссылку. (Ниже также показывает, что ссылки каталога работают подобным образом к ссылкам файла.):
lrwxrwxrwx. 1 user group 12 Aug 17 17:12 newCopy -> someFile.txt
-rw-rw-r--. 1 user group 32 Aug 17 17:36 newCopy.txt
Внимание
Ссылки могут быть сделаны указать на полный путь или относительный путь. Так как этот пример использовал соединение на основе относительного пути цели, находящейся в том же каталоге как создаваемая ссылка, связь была разорвана, когда это было скопировано в новый каталог.
cat: someDirLink/newCopy: No such file or directory
Символические и жесткие ссылки - это особенность файловой системы Linux, которая позволяет размещать один и тот же файл в нескольких директориях. Это очень похоже на ярлыки в Windows, так как файл на самом деле остается там же где и был, но вы можете на него сослаться из любого другого места.
В Linux существует два типа ссылок на файлы. Это символические и жесткие ссылки Linux. Они очень сильно отличаются и каждый тип имеет очень важное значение. В этой небольшой статье мы рассмотрим чем же отличаются эти ссылки, зачем они нужны, а также как создавать ссылки на файлы в Linux.
Выводы
Это все, что вам было необходимо знать про символические и жесткие ссылки linux. Надеюсь, вы получили общее представление об этих возможностях файловой системы и сможете использовать их для решения своих задач.
На завершение видео про ссылки в Linux:
Ваш пример
Они нарушают однозначность родительских каталогов
В цикле файловой системы существует несколько родительских каталогов:
В первом случае /tmp/a является родительским каталогом /tmp/a/b ,
Во втором случае /tmp/a/b/l является родительским каталогом /tmp/a/b/l/b , который так же, как /tmp/a/b ,
Таким образом, у него есть два родительских каталога.
Читайте также: