قم بالتثبيت من PyPI باستخدام pip install FATtools
(أسهل) أو قم بتنزيل الكود المصدري (أو الحزم التي تم إصدارها) من هنا.
تم إنشاؤه لإعادة فرز إدخالات الدليل في جدول جذر FAT32 للتعامل مع حدود بعض مشغلات MP3 للأجهزة، وهو يوفر الآن دعمًا كاملاً للقراءة/الكتابة في Python 3 (كلاهما 32 و64 بت) لـ FAT12/16/32 وexFAT أنظمة الملفات، لأغراض القرصنة والاسترداد.
علاوة على ذلك:
تم تنفيذ الميزات التالية (معظمها في Python، مع عدد قليل من استدعاءات ctypes للتعامل مع أقراص Win32 محليًا؛ ولا يتم اختبار التوافق مع Linux بانتظام):
من الواضح أنه نظرًا لأن نظام الملفات هو أمر معقد وحساس للغاية، وقد توجد أخطاء كبيرة حوله، فسوف تستخدمه بالكامل على مسؤوليتك الخاصة! لكنها تبدو مستقرة تمامًا وصالحة للاستخدام الآن.
كانت المنطقة الأكثر هشاشة (وبالتالي عرضة للأخطاء) هي آلية التخزين المؤقت، التي تعمل بطرق مختلفة:
في الواقع، سرعة الإدخال/الإخراج أقرب إلى سرعة النظام.
الكود هو GPLed (أنظر إلى GPL.TXT).
[1] يقتصر دعم سجل VHDX في الواقع على إمكانية إعادة التشغيل.
[2] في الواقع، لنفترض أنه يمكن للمرء تقسيم 8 تيرابايت VHDX مع قطاعات 4K باستخدام GPT وتنسيقه باستخدام FAT32 واستخدامه بسعادة ضمن Windows 11. ومع ذلك، فإن Windows 11 CHKDSK يبلغ عن ما لا يزيد عن 4 تيرابايت (بينما يقوم بإحصاء المجموعات بشكل صحيح) ). بالإضافة إلى ذلك، لا يمكن لـ FORMAT نفسه تطبيق تنسيق FAT32 الشرعي على قرص سعة 8 تيرابايت.
تقوم الحزمة بتثبيت برنامج 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)
الرجاء البحث داخل دليل "النماذج" لمزيد من نماذج الاستخدام.