Как узнать, какую файловую систему использует FUSE?

Дополнительные примечания к Отличный ответ Р. Перрина :

Предположим, вы не хотите архивировать абсолютные, а относительные пути, например 'data' вместо '/tmp/data'. Чтобы исключить абсолютные пути, ваши аргументы tar будут различаться в зависимости от используемой реализации tar (gnu tar или bsd tar):

$ for i in 0 1 2; do
    for j in 0 1 2; do 
      mkdir -p /tmp/data/sub$i/sub$j
      echo foo > /tmp/data/sub$i/sub$j/foo
    done
  done

$ find /tmp/data/
/tmp/data/
/tmp/data/sub2
/tmp/data/sub2/sub2
/tmp/data/sub2/sub2/foo
/tmp/data/sub2/sub1
/tmp/data/sub2/sub1/foo
/tmp/data/sub2/sub0
/tmp/data/sub2/sub0/foo
/tmp/data/sub1
/tmp/data/sub1/sub2
/tmp/data/sub1/sub2/foo
/tmp/data/sub1/sub1
/tmp/data/sub1/sub1/foo
/tmp/data/sub1/sub0
/tmp/data/sub1/sub0/foo
/tmp/data/sub0
/tmp/data/sub0/sub2
/tmp/data/sub0/sub2/foo
/tmp/data/sub0/sub1
/tmp/data/sub0/sub1/foo
/tmp/data/sub0/sub0
/tmp/data/sub0/sub0/foo

$ cd /tmp/data; tar -zvcf /tmp/_data.tar --exclude './sub[1-2]'
./
./sub0/
./sub0/sub2/
./sub0/sub2/foo
./sub0/sub1/
./sub0/sub1/foo
./sub0/sub0/
./sub0/sub0/foo

# ATTENTION: bsdtar's behaviour differs from traditional tar (without a leading '^')!
$ cd /tmp/data; bsdtar -zvcf /tmp/_data.tar --exclude './sub[1-2]' .
a .
a ./sub0
a ./sub0/sub0
a ./sub0/sub0/foo

# FIX: Use a regex by adding a leading '^' will cause bsdtar to match only parent files and folders.
$ cd /tmp/data; bsdtar -zvcf /tmp/_data.tar --exclude '^./sub[1-2]' .
# ALTERNATIVE: bsdtar -C /tmp/data -zvcf /tmp/_data.tar --exclude '^./sub[1-2]' .
a .
a ./sub0
a ./sub0/sub2
a ./sub0/sub1
a ./sub0/sub0
a ./sub0/sub0/foo
a ./sub0/sub1/foo
a ./sub0/sub2/foo

8
25.12.2016, 20:36
4 ответа

Я нашел ответ, представленный в комментариях Дона Кристи , лучшим

lsblk -no name,fstype

Это показывает мне именно то, что я хочу, и мне не нужно размонтировать устройство,

mmcblk0     
└─mmcblk0p1 exfat

См. также,

29
27.01.2020, 20:09

В общем случае невозможно перейти от точки монтирования FUSE к процессу, реализующему ее .

Если вы знаете что-то о том, как работает эта файловая система, это возможно. Вы должны отслеживать сторону устройства, а не точку монтирования. Например, в вашем случае файловая система FUSE раскрывает файловую систему на блочном устройстве, поэтому вы можете искать процессы, у которых открыто блочное устройство: lsof / dev / sdb1 или fuser / dev / sdb1 . Точно так же с SSHFS вы можете использовать lsof или netstat для поиска процесса, который имеет соединение с правильным сервером и т. Д. Это дает вам идентификатор процесса и ps может сказать вам, какую программу выполняет этот процесс.

5
27.01.2020, 20:09

Вы можете найти fs из / dev / sdb1 через:

fsck команду:

fsck -N /dev/sdb1

mount команду:

mount | grep /dev/sdb1

файл команда:

file -sL /dev/sdb1

df команда:

df -T | grep /dev/sdb1
0
27.01.2020, 20:09

Общий способ запроса резервной файловой системы для любого данного файла состоит в том, чтобы сделать

lsblk -no name,fstype,mountpoint "$(findmnt --target "$FILE" -no SOURCE)"

Вывод будет выглядеть примерно так

sdd1 exfat  /media/USER/CARD-A123

где sdd1— имя устройства, exfat— тип базовой файловой системы (, например. mountпокажет только fuseblkкак для NFTS, так и для exFat, и это покажет реальную файловую систему ), а остальная часть вывода — это точка монтирования для этой файловой системы.

Если вы получаете сообщение об ошибке, например

lsblk: : not a block device

$FILEне указывает на доступный для чтения файл или каталог.

0
26.07.2020, 13:01

Теги

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