AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 507374
Accepted
JonBrave
JonBrave
Asked: 2019-03-21 01:27:40 +0800 CST2019-03-21 01:27:40 +0800 CST 2019-03-21 01:27:40 +0800 CST

Como detectar o tipo de sistema de arquivos NTFS/exFAT do script

  • 772

O usuário tem um script de backup (incremental) usando rsync, para um dispositivo externo. Isso estava errando em um SSD que ele tinha. Acontece que seu dispositivo foi formatado exFAT. Isso significa que preciso detectar isso no script , pois preciso alterar as opções para rsync(por exemplo, exFAT não pode lidar com links simbólicos, sem permissões de proprietário/grupo, etc.).

O usuário está executando o Linux Mint. Eu corro o Ubuntu. Só posso supor/esperar que uma solução para o meu Ubuntu funcione para o seu Mint.

Eu olhei:

  • Como sei se uma partição é ext2, ext3 ou ext4?
  • Como saber em que tipo de sistema de arquivos você está?
  • https://www.tecmint.com/find-linux-filesystem-type/

Há uma variedade de boas sugestões lá, mas não vejo uma que atenda aos meus requisitos, que são:

  • Deve relatar (analisável) ntfs/ exfatexplicitamente, não apenas dizer fuseblk(o que será para ambos exfat& ntfs, preciso distinguir).
  • Não deve exigir sudo .
  • Deve ser executável a partir de um caminho de diretório no sistema de arquivos (pode assumir que será montado), não apenas a partir de um arquivo /dev/....

Das sugestões que tentei:

  • fdisk -l, parted -l, file -sL: requer sudo e/ou /dev/...dispositivo de bloco
  • mount: requer /dev/..., apenas relatóriosfuseblk
  • df -T, stat -f -c %T: aceita diretório, mas informa apenasfuseblk
  • lsblk -f, blkid: requer /dev/...dispositivo de bloco

Existe um comando único e simples que atenda a todos esses critérios? Ou, lsblk/ blkidparecem relatar exfat/ ntfscorretamente, se eu precisar passá-los /devcomo faço para obter isso adequadamente do caminho do diretório no script?

shell-script filesystems
  • 3 3 respostas
  • 1393 Views

3 respostas

  • Voted
  1. Best Answer
    JonBrave
    2019-04-17T01:08:23+08:002019-04-17T01:08:23+08:00

    Obrigado aos outros pôsteres por responder/sugerir. Aqui está a minha solução completa.

    df -Ppode ser usado para obter o dispositivo do caminho e pode ser alimentado lsblk --fspara obter o sistema de arquivos exato. Então, um one-liner é:

    fs=$( lsblk --fs --noheadings $( df -P $path | awk 'END{print $1}' ) | awk 'END{print $2}' )
    

    Se tudo o que você precisa saber é que o sistema de arquivos é fuseblk--- que cobre tanto ntfs& exfate acaba sendo suficiente para meus propósitos --- isso pode ser determinado com muito mais simples:

    fs=$( stat -f -c '%T' $path )
    
    • 8
  2. Seamus
    2019-03-21T05:30:02+08:002019-03-21T05:30:02+08:00

    Não tenho certeza se entendi sua pergunta completamente, então vou oferecer isso como um "ponto de partida". Se chegar perto, tenho certeza de que você pode ajustá-lo para obter o que precisa:

    $ lsblk --fs | grep / | awk '{print $1, $2}'  
    
    • 4
  3. Archemar
    2019-03-21T01:39:59+08:002019-03-21T01:39:59+08:00

    que tal df .e mount?

    primeiro vamos pegar o ponto de montagem

     cd /a/dir
     mp=$(df . | awk 'NR==2 { print $1}')
    
    • $mpenquanto segura o hoding do nome do dispositivo/a/dir

    agora, ponto de montagem

    mount | awk -v mp=$mp '$1 == mp { print $5}'
    

    isso deve retornar o tipo de montagem (seja xfs, etx3, ...)

    editar:

    • Vejo que minha resposta está coberta em um dos links, você pode desejar explorar a linha retornada pela montagem, não apenas$5
    • 2

relate perguntas

  • Um script que imprime as linhas de um arquivo com seu comprimento [fechado]

  • exportar variáveis ​​​​env programaticamente, via stdout do comando [duplicado]

  • Dividir por delimitador e concatenar problema de string

  • Como os desenvolvedores do kernel Linux lidam com seu trabalho com milhões de linhas de código? É um método? [fechado]

  • MySQL Select com função IN () com array bash

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve