Если я hardlink к каталогу, содержание будет “сохранено” как будто я трудно связанный с каждым файлом?

echo "`cat /sys/class/block/sda2/size`*512" | bc

или если Вы используете удар или какую-либо другую подобную POSIX оболочку, арифметические операторы которой работают с целыми числами на 64 бита, Вы не должны даже звонить bc

echo "$((512*$(cat /sys/class/block/sda2/size)))"

дает размер в байте.

Вызов к cat и ветвление (за исключением bash) может быть оптимизирован далеко с bash, ksh93 и zsh с:

echo "$((512*$(</sys/class/block/sda2/size)))"
1
05.09.2013, 09:14
1 ответ

Это не работало бы.

Жесткая ссылка не сохраняет содержание файлов, просто указатель на то содержание. Таким образом в случае файлов, модификации файла не сохраняются, и для каталогов, который означает, что изменения в содержании каталогов не были бы сохранены также. Как (вниз под) каждый файл удален индивидуально. Даже если бы Вы могли бы трудно связать каталог, это просто было бы пусто впоследствии все равно.

Hardlinks обычно запрещаются для каталогов во-первых. Символьные ссылки для каталогов уже проблематичны, там существуют взломы для предотвращения бесконечного цикла символьной ссылки, который будет сопровождаться вниз к глубоко. По крайней мере, для символьных ссылок они легко определяются и просто игнорируются, большинство программ, которые обходят деревья каталогов (такой как find) проигнорируйте их полностью (никогда не следуют за ними), по умолчанию.

Каталоги Hardlinked было бы более трудно обнаружить и отслеживать, поскольку Вы не можете сказать, какой Вы уже посетили, необходимо будет проверить на каждый каталог, является ли это одним из уже посещенных. Большинство программ не делает этого, поскольку они просто ожидают, что условно эта вещь не существует во-первых.

Если Вам все еще нужно к hardlink каталогам по некоторым причинам, существует что-то, что делает что-то очень похожее, и это mount --bind olddir newdir. Свяжите монтируется, не имеют некоторых ловушек, например, никакие бесконечные структуры, поскольку монтирование заблокировано к одному месту и не повторяется к себе. В обмен это имеет других (другое подмонтирование не появляется в этом дереве ни один). Который является замечательной особенностью, если Вы ищете файлы, скрытые другим монтированием.

Нет никакого сохранения содержания ни в одном случае, для этого Вам всегда нужна реальная копия.

3
27.01.2020, 23:29
  • 1
    , hardlink действительно сохранил файл, если файл удален в его исходном местоположении, потому что inode все еще имеет ссылку, таким образом, это не может быть освобождено. –  strugee 05.09.2013, 09:47
  • 2
    также, свяжите монтирование, не сохранится через перезагрузки, если Вы просто ввели это дословно, не добавляя его к fstab или чему-то. –  strugee 05.09.2013, 09:49
  • 3
    @strugee, Но Вы не можете удалить каталог, если это не пусто. Таким образом, hardlinked каталог был бы действительно сохранен, если бы он был удален в исходном местоположении, но так как это было бы пусто, это не много защиты. –  Barmar 13.12.2014, 00:58

Теги

Похожие вопросы