ユーザーは、を使用してrsync
外部デバイスの(増分)バックアップスクリプトを持っています。彼が持っていたSSDのバグでした。彼のデバイスがフォーマットされていることがわかりましたexFAT
。これは私がこれを検出する必要があることを意味します。スクリプトから、オプションを変更する必要があるためですrsync
(例:exFATはシンボリックリンクを処理できず、所有者/グループ権限がないなど)。
ユーザーはLinux Mintを実行しています。私はUbuntuを実行します。私のUbuntuソリューションは彼のMintでも動作すると仮定/希望するだけです。
私は見たことがない:
- パーティションがext2、ext3、またはext4かどうかはどうすればわかりますか?
- どのタイプのファイルシステムを使用しているのか、どうすればわかりますか?
- https://www.tecmint.com/find-linux-filesystem-type/
良い提案がたくさんありますが、次のような私の要件を満たす提案はありません。
- (構文解析可能)
ntfs
/ は単にexfat
言ったのではなく、明示的に報告しなければなりません (これはfuseblk
& すべてに該当します。区別する必要があります)。exfat
ntfs
- 〜しなければならないいいえ必要Sudo。
/dev/...
実行可能ファイルは。
私が試した提案の中で:
fdisk -l
、、parted -l
:file -sL
必要Sudoおよび/または/dev/...
ブロックデバイスmount
:必須/dev/...
、報告のみfuseblk
df -T
、stat -f -c %T
:ディレクトリを許可しますが、報告するだけです。fuseblk
lsblk -f
、blkid
:/dev/...
ブロックデバイスが必要です
これらすべての基準を満たす単純なコマンドはありますか?またはlsblk
/が/をblkid
正しく報告しているようです。これを渡す必要がある場合は、スクリプトのディレクトリパスから適切にインポートするにはどうすればよいですか?exfat
ntfs
/dev
ベストアンサー1
他の投稿の回答/提案を送っていただきありがとうございます。ここに私の完全な解決策があります。
df -P
パスからデバイスをインポートするために使用でき、lsblk --fs
正確なファイルシステムをインポートするために提供できます。したがって、1行は次のようになります。
fs=$( lsblk --fs --noheadings $( df -P $path | awk 'END{print $1}' ) | awk 'END{print $2}' )
あなたが知っておくべきファイルシステムが何であるかを知っていればfuseblk
---それは私の目的に十分でntfs
十分exfat
であることがわかりました---これはより簡単な方法で決定できます:
fs=$( stat -f -c '%T' $path )