Дополнительные примечания к Отличный ответ Р. Перрина :
Предположим, вы не хотите архивировать абсолютные, а относительные пути, например '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
Я нашел ответ, представленный в комментариях Дона Кристи , лучшим
lsblk -no name,fstype
Это показывает мне именно то, что я хочу, и мне не нужно размонтировать устройство,
mmcblk0
└─mmcblk0p1 exfat
См. также,
В общем случае невозможно перейти от точки монтирования FUSE к процессу, реализующему ее .
Если вы знаете что-то о том, как работает эта файловая система, это возможно. Вы должны отслеживать сторону устройства, а не точку монтирования. Например, в вашем случае файловая система FUSE раскрывает файловую систему на блочном устройстве, поэтому вы можете искать процессы, у которых открыто блочное устройство: lsof / dev / sdb1
или fuser / dev / sdb1
. Точно так же с SSHFS вы можете использовать lsof
или netstat
для поиска процесса, который имеет соединение с правильным сервером и т. Д. Это дает вам идентификатор процесса и ps
может сказать вам, какую программу выполняет этот процесс.
Вы можете найти fs
из / dev / sdb1
через:
fsck
команду:
fsck -N /dev/sdb1
mount
команду:
mount | grep /dev/sdb1
файл
команда:
file -sL /dev/sdb1
df
команда:
df -T | grep /dev/sdb1
Общий способ запроса резервной файловой системы для любого данного файла состоит в том, чтобы сделать
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
не указывает на доступный для чтения файл или каталог.