Я читал на многих сайтах, что в Linux символические ссылки (программные ссылки, символические ссылки) подобны указателям, которые ссылаются на другой файл, который может находиться где угодно (например, ярлыки Windows). Однако, когда я проверяю использование диска папкой, в которой есть символические ссылки, происходит несоответствие между тем, что говорит мой файловый менеджер, и тем, что du
сообщает. Однако, если я наберу du -L
( -L, --dereference; dereference all symbolic links
со страницы руководства), выходные данные du -L
и размер, о которых сообщает мой файловый менеджер, будут одинаковыми .
Мой вопрос : если у меня есть мягкая ссылка на большой файл, например, в моем отдельномhome
разделе, у меня будут какие-то проблемы?
Пример :
Моя /var/tmp
папка теперь пуста. Давайте создадим файл:
$ cat /some/file.txt > file.txt
$ du -ac
164 ./file.txt
168 .
168 total
И мой файловый менеджер (в данном случае Thunar) сообщает
Размер: 1 предмет, общим объемом 163,0 кБ
Отлично. Теперь давайте создадим действительно большой файл /tmp
и ссылку на него:
$ cat /dir/really_big.txt > /tmp/heavy.txt
$ du -a | grep heavy.txt
408 ./heavy.txt
$ ln -s /tmp/heavy.txt heavy.txt
$ du -ac
164 ./file.txt
0 ./heavy.txt
168 .
168 total
Пока все хорошо. Но если я открою свой файловый менеджер:
Размер: 2 шт, на общую сумму 570,3 кБ
И наконец:
$ du -acL
164 ./file.txt
408 ./heavy.txt
576 .
576 total
Если раздел, в котором /var/tmp
находится файл, имеет размер 1 ГБ и я создаю в нем ссылку на файл размером 1 ГБ, die умрет ли мой жесткий диск? Я знаю, что du
выдаст 168 и Thunar 1 GiB, но я не знаю, какой из них правильный.
источник
Ответы:
Конечно, символические ссылки занимают место, но занимают место, необходимое для хранения имени и цели, а также несколько байтов для других метаданных. Пространство, занимаемое символической ссылкой, не зависит от пространства, занимаемого целью (в конце концов, цель даже не обязана существовать).
Обычный
du
отчет о пространстве, занимаемом деревом каталогов на диске.du -L
сообщает о пространстве, которое заняло бы дерево каталогов, если бы все символические ссылки были заменены их целью. Первый обычно полезная информация; например, это пространство, которое вы восстановите, если удалите дерево, и это (приблизительно) пространство, необходимое для резервного копирования дерева.du
в дереве каталогов отображается (как правило) немного больше, чем сумма размеров файлов. Это связано с двумя вещами. Во-первых,du
также подсчитываются каталоги, которые занимают немного места для хранения имен файлов и метаданных. Во-вторых,du
подсчитывается дисковое пространство, занимаемое файлом, которое может отличаться от размера файла: наиболее распространенный эффект заключается в том, что файлы занимают целое число блоков (4 КБ в обычной установке Linux), поэтому 1-байтовый файл может показать как 4kB на выходе du; но сжатие (например, примитивная форма, предоставляемая разреженными файлами практически на каждой файловой системе unix) может сделать размер файла больше, чем его использование на диске.Из приведенных вами чисел видно, что Thunar сообщает сумму размеров файлов в дереве каталогов, следуя символическим ссылкам . На самом деле он говорит это тонким способом - он утверждает, что общий размер составляет 570,3 КБ, а не то, что использование диска составляет 570,3 КБ. Что совершенно не очевидно из пользовательского интерфейса или документации, так это то, что Thunar следует по символическим ссылкам при вычислении размера.
Какой из них «правильный», это субъективный вопрос.
du
сообщает об использовании диска. Тунар сообщает общий размер по символическим ссылкам. Создание символической ссылки оказывает незначительное влияние на использование диска, но по определению действительно изменяет общий размер после символических ссылок, о которых сообщает Thunar.источник
du
показывает использование диска, в то время как Thunar показывает что-то еще.Я думаю, что по умолчанию ваш файловый менеджер пытается получить размер файлов, на которые указывают программные ссылки, тогда как он
du
дает вам размер каталога и самих программных ссылок, но не файлов, на которые они указывают.Чтобы уточнить,
Я не уверен, что это то, о чем вы спрашивали, но если это так, то я верю, что это может быть ответом на ваш вопрос.
источник