Как отмечали другие, это действительно метаданные. Одним из способов использования этого является хранение информации о загрузке, например, откуда был загружен файл. Это позволяет MacOS запрашивать у вас открытие файла, загруженного из Интернета, например:
$ xattr -p -l com.apple.metadata:kMDItemWhereFroms foo
com.apple.metadata:kMDItemWhereFroms:
00000000 62 70 6C 69 73 74 30 30 A2 01 02 5F 10 68 68 74 |bplist00..._.hht|
00000010 74 70 3A 2F 2F 64 6F 77 6E 6C 6F 61 64 73 2E 70 |tp://downloads.p|
00000020 65 72 66 73 6F 6E 61 72 2E 6E 65 74 2F 72 65 64 |erfsonar.net/red|
00000030 68 61 74 2F 6D 61 69 6E 2F 72 70 6D 73 2F 65 6C |hat/main/rpms/el|
00000040 36 2F 69 33 38 36 2F 6D 61 69 6E 2F 52 50 4D 53 |6/i386/main/RPMS|
00000050 2F 70 65 72 66 73 6F 6E 61 72 2D 75 69 2D 77 65 |/perfsonar-ui-we|
00000060 62 2D 31 2E 37 2E 31 2E 65 6C 36 2E 6E 6F 61 72 |b-1.7.1.el6.noar|
00000070 63 68 2E 72 70 6D 5F 10 2B 68 74 74 70 3A 2F 2F |ch.rpm_.+http://|
00000080 64 6F 63 73 2E 70 65 72 66 73 6F 6E 61 72 2E 6E |docs.perfsonar.n|
00000090 65 74 2F 69 6E 73 74 61 6C 6C 5F 70 73 75 69 2E |et/install_psui.|
000000A0 68 74 6D 6C 08 0B 76 00 00 00 00 00 00 01 01 00 |html..v.........|
000000B0 00 00 00 00 00 00 03 00 00 00 00 00 00 00 00 00 |................|
000000C0 00 00 00 00 00 00 A4 |.......|
000000c7
Вы можете попробовать написать это самостоятельно:
PID=..your process..
export RESTORE_TO_DIR=some_place
find "/proc/$PID/fd" -lname '* (deleted)' -printf '%p %l\0' |
xargs -0 sh -c '
for l; do
f=${l%% *}; t="$RESTORE_TO_DIR${l#* }"
echo mkdir -p "${t%/*}" && echo cp -vb "$f" "${t% (deleted)}"
done
' sh
Удалите echo
перед mkdir
и cp
, если все в порядке. Если вы установите для RESTORE_TO_DIR
пустую строку, она должна восстановить удаленные файлы на их исходное место.
Вопреки некоторым мнениям, вы не можете создавать жесткие ссылки на удаленные файлы (иноды, на которые нет ссылок ни в одном каталоге ).