pip install FATtools
(簡単) を使用して PyPI からインストールするか、ここからソース コード (またはリリースされたパッケージ) をダウンロードします。
一部のハードウェア MP3 プレーヤーの制限に対処するために FAT32 ルート テーブル内のディレクトリ エントリを再ソートするために生まれましたが、FAT12/16/32 および exFAT に対して Python 3 (32 ビットと 64 ビットの両方) で完全な読み取り/書き込みサポートを提供するようになりました。ハッキングと回復を目的としたファイルシステム。
さらに:
次の機能が実装されています (ほとんどが Python で、Win32 ディスクをネイティブに処理するためにいくつかの ctypes 呼び出しが行われます。Linux との互換性は定期的にテストされていません)。
明らかに、ファイルシステムは非常に複雑でデリケートな問題であり、大きなバグが潜んでいる可能性があるため、完全に自己責任で使用することになります。しかし、今ではかなり安定して使えるようです。
最も脆弱な (したがってバグの影響を受けやすい) 領域は、さまざまな方法で動作するキャッシュ メカニズムでした。
実際には、I/O 速度はシステムの速度に近いです。
コードは GPL で保護されています (GPL.TXT を参照)。
[1] VHDX ログのサポートは、実際には再生機能に限定されています。
[2] 実際には、4K セクターを含む 8 TB VHDX を GPT でパーティション分割し、FAT32 でフォーマットして Windows 11 で問題なく使用できます。ただし、Windows 11 CHKDSK は (クラスターを正しくカウントしているにもかかわらず) 4 TBバイト以下しか報告しません。 )。また、FORMAT 自体は、そのような正当な FAT32 フォーマットを 8 TB ディスクに適用することはできません。
このパッケージはfattools
スクリプトをインストールします。これを使用して簡単なコマンド ライン操作を実行できます。
fattools mkvdisk -s 8T --large-sectors image.vhdx
fattools mkfat -t exfat -p gpt image.vhdx
fattools mkvdisk -b image.vdi delta.vdi
fattools wipe image.vhd
fattools imgclone image.raw image.vhd
以下の場合、結果のイメージ サイズが小さくなる可能性があることに注意してください。 1) ボリュームが最適化されている。 2) ディレクトリ テーブルがクリーンアップされ、縮小されます。 3) 空き領域が以前に消去 (ゼロ化) されている。
fattools imgclone \.PhysicalDrive2 image.vhd
fattools ls image1.vhd/py* image2.vdi/py*
fattools cp C:Python39Libsite-packages image.vhd/Python39/Lib
fattools cp image.vhd/Python39 C:ProgramData
fattools cat image.vhd/readme.txt
fattools rm image.vhd/Python39
# -*- coding: cp1252 -*-
from FATtools.Volume import *
disk = vopen('MyDiskImage.img', 'r+b', 'disk')
from FATtools import partutils
gpt = partutils.partition(disk)
from FATtools import mkfat, Volume
part = Volume.vopen('MyDiskImage.img', 'r+b', 'partition0')
mkfat.exfat_mkfs(part, part.size)
fattools reordergui
# -*- coding: cp1252 -*-
from FATtools.Volume import *
# Assuming we have DirA, DirB, DirC in this disk order into X:
root = vopen('X:', 'r+b')
new_order = '''DirB
DirC
DirA'''
root._sortby.fix = new_order.split('n') # uses built-in directory sort algorithm
root.sort(root._sortby) # user-defined order, in _sortby.fix list
root.sort() # default ordering (alphabetical)
# -*- coding: cp1252 -*-
from FATtools.Volume import vopen, vclose
from FATtools.mkfat import exfat_mkfs
from os.path import join
import os
real_fat_fs = 'F:' # replace with mount point of your file system
# Open and format with FATtools
fs = vopen(real_fat_fs, 'r+b',what='disk')
exfat_mkfs(fs, fs.size)
vclose(fs)
# Write some files with Python and list them
T = ('c','a','b','d')
for t in T:
open(join(real_fat_fs, t+'.txt'), 'w').write('This is a sample "%s.txt" file.'%t)
print(os.listdir(real_fat_fs+'/'))
# Open again, and sort root with FATtools
fs = vopen(real_fat_fs, 'r+b')
fs.sort()
vclose(fs)
# Check new table order with Python
print(os.listdir(real_fat_fs+'/'))
# -*- coding: cp1252 -*-
from FATtools.Volume import vopen, vclose
from FATtools.mkfat import exfat_mkfs
from FATtools.partutils import partition
# Open & create GPT partition
o = vopen('\\.\PhysicalDrive1', 'r+b',what='disk')
print('Partitioning...')
partition(o, 'mbr')
vclose(o)
# Reopen and format with EXFAT
o = vopen('\\.\PhysicalDrive1', 'r+b',what='partition0')
print('Formatting...')
exfat_mkfs(o, o.size)
vclose(o) # auto-close partition AND disk
# Reopen FS and write
print('Writing...')
o = vopen('\\.\PhysicalDrive1', 'r+b')
# Write some files with FATtools and sort them
T = ('c','a','b','d')
for t in T:
f = o.create(t+'.txt')
f.write(b'This is a sample "%s.txt" file.'%bytes(t,'ascii'))
f.close()
o.sort()
vclose(o)
その他の使用例については、「samples」ディレクトリ内を参照してください。