Instal dari PyPI menggunakan pip install FATtools
(lebih mudah) atau unduh kode sumber (atau paket yang dirilis) dari sini.
Dilahirkan untuk mengurutkan ulang entri direktori dalam tabel akar FAT32 untuk mengatasi batasan beberapa perangkat keras pemutar MP3, kini menyediakan dukungan baca/tulis penuh dalam Python 3 (32- dan 64-bit) untuk FAT12/16/32 dan exFAT sistem file, untuk tujuan peretasan dan pemulihan.
Lebih-lebih lagi:
Fitur-fitur berikut diimplementasikan (kebanyakan dalam Python, dengan beberapa panggilan ctypes untuk menangani disk Win32 secara asli; kompatibilitas dengan Linux tidak diuji secara rutin):
Tentu saja, karena sistem file adalah masalah yang sangat kompleks dan rumit, dan bug besar mungkin ada, Anda akan MENGGUNAKANNYA SEPENUHNYA DENGAN RISIKO ANDA SENDIRI! Tapi sepertinya sudah cukup stabil dan bisa digunakan sekarang.
Area yang paling rentan (dan rentan terhadap bug) adalah mekanisme caching, yang beroperasi dengan cara berbeda:
Sebenarnya, kecepatan I/O lebih mendekati kecepatan sistem.
Kodenya GPL (lihat GPL.TXT).
[1] Dukungan VHDX Log sebenarnya terbatas pada kemampuan memutar ulang.
[2] Sebenarnya, seseorang dapat mempartisi dengan GPT VHDX 8 TB dengan sektor 4K dan memformat dengan FAT32 dan dengan senang hati menggunakannya di Windows 11. Namun, Windows 11 CHKDSK melaporkan tidak lebih dari 4 TB byte (sementara menghitung cluster dengan benar ). Selain itu, FORMAT sendiri tidak dapat menerapkan format FAT32 yang sah ke disk 8 TB.
Paket ini menginstal skrip fattools
, Anda dapat menggunakannya untuk melakukan operasi baris perintah sederhana.
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
Harap diperhatikan bahwa ukuran gambar yang dihasilkan dapat diperkecil jika: 1) volume didefragmentasi; 2) tabel direktori dibersihkan dan dikecilkan; 3) ruang kosong telah dihapus (dipusatkan) sebelumnya.
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)
Silakan lihat ke dalam direktori 'sampel' untuk contoh penggunaan lainnya.