Повреждение оперативной жесткой ссылки?

Вы попробовали mplayer? Согласно MPlayer 1.0rc3 выпуск - это поддерживает 10-разрядные видео H264. И для хорошего GUI для mplayer, Вы могли контроль smplayer

12
04.03.2013, 14:46
6 ответов
cp -p filename filename.tmp
mv -f filename.tmp filename

Создание его scriptable:

dir=$(dirname -- "$filename")
tmp=$(TMPDIR=$dir mktemp)
cp -p -- "$filename" "$tmp"
mv -f -- "$tmp" "$filename"

Выполнение копии сначала, затем перемещение ее в место, имеют преимущество, которое файл атомарно изменяет от того, чтобы быть жесткой ссылкой на то, чтобы быть отдельной копией (нет никакого смысла вовремя где filename является неравнодушным или недостающим).

13
27.01.2020, 19:55

Вы, вероятно, подразумеваете, что хотите отколоть жесткую ссылку на отдельный, независимый файл.

mv hardlink tempname && cp tempname hardlink && rm tempname

hardlink является соединением между записью в каталоге и inode блоком на диске.

метаданные файла хранилища inodes, и для маленьких файлов, некоторые файловые системы хранят данные в inode, иначе указатели на блоки данных, и для очень больших файлов косвенные и двойные косвенные списки указателей на дисковые единицы выделения.

Независимо, соединение между именем файла (Который является тем, что производит команда ls) и inode блок, который хранит эти метаданные, называют жесткой ссылкой.

Наличие нескольких жестких ссылок на единственный файл означает тот же inode, на который ссылается больше чем одна запись каталога, возможно в различных каталогах (в единственной файловой системе)

комната удаляет запись имени файла из каталога. После того как на inode больше не ссылаются никакие файлы, его пространство освобождено для использования другими файлами.

7
27.01.2020, 19:55
  • 1
    Действительно. Это что cp и mv примеры подразумеваются. Так никакой путь вокруг использования временного файла, я вижу. –  0xC0000022L 04.03.2013, 15:20
  • 2
    @0xC0000022L, нет, inodes не содержат указатели на другой inodes. Только к блокам данных (или они могут удвоиться как пространство данных, если объект является маленьким). –  vonbrand 04.03.2013, 15:26
  • 3
    Удостоверьтесь полномочия и другие данные сохраняются при копировании, я использование .e. cp -a (по крайней мере, GNU coreutils). –  vonbrand 04.03.2013, 15:29
  • 4
    @0xC0000022L, если Вы смотрите тщательно, существует только временное название orginal файла, новый файл создается только на последнем шаге. –  vonbrand 04.03.2013, 15:32
  • 5
    @vonbrand Они могут действительно, в зависимости от того, какая файловая система используется. –  Johan 04.03.2013, 15:35

Команда, которую Вы ищете, unlink

-1
27.01.2020, 19:55
  • 1
    Возможно, мой вопрос не был ясен, но "оперативным" и примерами с cp и mv Я означал ясно давать понять, что я хочу, чтобы файл существовал позже. –  0xC0000022L 04.03.2013, 15:21
  • 2
    , я не нашел это ясным, нет. Необходимо пойти с ответом Johan, затем. –  Jenny D 04.03.2013, 15:23
  • 3
    Команда "удаляет связь", просто удаляет файл (что удаление связь () системный вызов делает). –  Raúl Salinas-Monteagudo 27.09.2016, 14:23
[112974]Поместите это в конец вашего ~/.bashrc файла.

Запустите его так

3
27.01.2020, 19:55

Лучшим способом сделать это с помощью бэш-скрипта было бы что-то вроде этого:

if [ -f "$1" ] ; then
dir="$(dirname -- "$1")"
tmpfile="$(mktemp --tmpdir="$dir")"
cp --preserve=all -f -- "$1" "$tmpfile"
mv -f -- "$tmpfile" "$1"
fi

указывает на это:

  • проверьте, является ли файл обычным файлом, прежде чем пытаться скопировать его
  • сохраните старый файл на месте, пока копия не будет готова
  • используйте mktemp для создания файла, который гарантированно не существует
  • используйте -f для принудительной перезаписи и --preserve=all для сохранения метаданных как можно больше похожих на исходный файл
  • используйте -- -- и " процитировать пути, содержащие пробелы и/или начинающиеся с -

Замена без создания временного файла невозможна с текущими (3.16) системными вызовами linux: в то время как можно перезаписать файл атоматически (т.е, удалить старый файл и заменить его на новый в качестве единственной операции), это невозможно сделать с файлом, который не имеет имени в файловой системе (т.е. временный файл, созданный с использованием флага O_TMPFILE функции open), поскольку функция rename требует в качестве входного имени файла (отсутствует версия rename, которая принимает в качестве входного дескриптора файла - подробнее см. here)

.
3
27.01.2020, 19:55

Если вы ищете все имена файлов, которые жестко привязаны к этому файлу, то вы можете использовать:

find -samefile myknowhardlinkfile

также ls -il myknowhardlink file покажет вам количество имен файлов, жестко привязанных к одному и тому же inode (третье поле).

101612442 -rw-rw-r--. 2 me me 0 Aug  5 07:07 myknowhardlinkfile
-1
27.01.2020, 19:55

Теги

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