«stat -f» означает «Тип: fuseblk». Это должно быть «Тип: предохранитель»

Предполагая, что базовые имена файлов уникальны в деревьях, это довольно просто:

join <(cd A; find . -type f | while read f; do echo $(basename $f) $(dirname $f); done | sort) \
     <(cd B; find . -type f | while read f; do echo $(basename $f) $(dirname $f); done | sort) |\
while read name to from
do
        mkdir -p B/$to
        mv -v B/$from/$name B/$to/
done

Если вы хотите очистить старые пустые каталоги, используйте:

find B -depth -type d -delete
2
16.08.2018, 22:53
1 ответ

Я предполагаю, что эту ошибку слишком поздно исправлять. (. теперь это также функция :-).

В настоящее время S_MAGIC_FUSEBLKопределяется как представление того, что, как я думаю, ядро ​​​​внутренне называет FUSE _SUPER _MAGIC . (Google предполагает, что это может быть определено в "fs.h"? Но я не могу найти "fs.h" в coreutils).

stat -f.печатает S_MAGIC_FUSEBLKкак «Тип :fuseblk», что звучит разумно. Проблема в том, что точно такая же магия возвращается и для неблочных файловых систем FUSE, отличных от -. Это одно из полей, возвращаемых системным вызовом Linux statfs(). Я подозреваю, что первоначальный автор тестировал только файловые системы FUSE на основе блока -, такие как ntfs-3g.

Я поискал в Интернете информацию об этом и нашел только ветку об оригинальном патче. Удобно, что тот же поток объяснил проблемы обратной совместимости как причину не обновлять описание другого типа файловой системы. Если это действительно так, то похоже, что оба описания существуют слишком долго, и менять их было бы слишком рискованно.

https://lists.gnu.org/archive/html/bug-coreutils/2009-12/msg00229.html

2
27.01.2020, 22:08

Теги

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