xdvdfs
عبارة عن مجموعة من الأدوات للتفاعل مع صور XDVDFS/XISO.
xdvdfs-cli
هي أداة سطر أوامر للتفاعل مع ملفات xiso.
إذا تم إعداد الحمولة بشكل صحيح في المسار، فيمكن تثبيتها باستخدام:
$ cargo install xdvdfs-cli
وبخلاف ذلك، يمكن تشغيله من جذر مساحة العمل كمشروع افتراضي.
يتوفر أيضًا توزيع ثنائي لـ xdvdfs-cli في إصدارات github.
سيؤدي تشغيل xdvdfs
بدون وسيطات إلى ظهور شاشة المساعدة، وإظهار الأوامر الفرعية المدعومة:
Usage: xdvdfs [COMMAND]
Commands:
ls List files in an image
tree List all files in an image, recursively
md5 Show MD5 checksums for files in an image
checksum Compute deterministic checksum of image contents
info Print information about image metadata
copy-out Copy a file or directory out of the provided image file
unpack Unpack an entire image to a directory
pack Pack an image from a given directory or source ISO image
build-image Pack an image from a given specification
image-spec Manage image spec `xdvdfs.toml` files
compress Pack and compress an image from a given directory or source ISO image
help Print this message or the help of the given subcommand(s)
سيؤدي تشغيل أمر فرعي باستخدام العلامة -h
إلى إظهار معلومات المساعدة لهذا الأمر الفرعي المحدد.
لحزم صورة من دليل، قم بتشغيل:
$ xdvdfs pack < directory > [optional output path]
سيؤدي هذا إلى إنشاء ملف ISO يطابق 1 إلى 1 مع دليل الإدخال.
يمكن إعادة تجميع الصور من صورة ISO موجودة:
$ xdvdfs pack < input-image > [optional output path]
سيؤدي هذا إلى إنشاء ملف ISO يطابق 1 إلى 1 مع الصورة المدخلة.
يمكن تجميع الصور أثناء إعادة كتابة مسارات المضيف إلى وجهات مختلفة في الصورة الأساسية باستخدام الأمر الفرعي xdvdfs build-image
.
إذا لم تكن هناك حاجة إلى وظيفة إعادة تعيين المسار (أي أنك تريد قاعدة /**:/{1}
فقط) فيجب أن تفضل xdvdfs pack
بدلاً من ذلك.
الطريقة الأساسية لتحقيق ذلك هي باستخدام ملف xdvdfs.toml
:
[ metadata ]
# Relative path to output iso, if not specified in command [optional]
output = " dist/image.xiso.iso "
# List of host-to-image path mapping rules. At least one rule is required.
# All paths are relative to the provided source path, the `xdvdfs.toml` file,
# or the working directory, in that priority order
# Host paths are matched by glob pattern
# Image paths have fields given by `{x}` substituted, where `x` is the index
# of the glob match, starting at 1. `{0}` matches the entire host path.
# Globs are evaluated in the provided order
[ map_rules ]
# Map contents of the "bin" directory to the image root
bin = " / "
# Map anything in the assets directory to `/assets/`
# Equivalent to `assets = "/assets"`
"assets/**" = " /assets/{1} "
# Map any file in the `sound` subdirectory with name `priority`
# and any extension to the same path in the image
# Note that `{0}` matches the entire relative host path
# Also note that due to the linear ordering of glob matches,
# this takes precedence over the below rule
"sound/priority.*" = " /{0} "
# Map any file in the `sound` subdirectory with extension `a`, `b`, or `c`,
# to `/a/filename`, "/b/filename" or `/c/filename`, based on its filename
# and extension.
"sound/*.{a,b,c}" = " /{2}/{1} "
# but, exclude any files in the `sound` subdirectory with filename `excluded`
# The image path is a don't-care value, and has no effect
"!sound/excluded.*" = " "
# Since globs are evaluated in order, this includes any otherwise excluded
# files in the `sound` subdirectory with name `excluded` and extension `c`
"sound/excluded.c" = " /c/excluded "
بافتراض أن xdvdfs.toml
وجميع المسارات المذكورة أعلاه مرتبطة بالدليل الحالي، يمكن تعبئة الصورة بما يلي:
# Produces `dist/image.xiso.iso` with the above configuration
$ xdvdfs build-image
هناك طرق أخرى لحزم الصورة من الدلائل الأخرى:
# Produces `/dist/image.xiso.iso`
$ xdvdfs build-image < path-to-source-dir >
# Also produces `/dist/image.xiso.iso`
$ xdvdfs build-image < path-to-source-dir > /xdvdfs.toml
# Produces `./dist/output.xiso.iso` in the current directory
$ xdvdfs build-image < path-to-source-dir > dist/output.xiso.iso
# Produces `/dist/image.xiso.iso`, with `xdvdfs.toml` not
# necessarily being in `. Here it is in the current directory
$ xdvdfs build-image -f xdvdfs.toml < path-to-source-dir >
لمعرفة التعيين الحقيقي الذي يتم منحه لـ xdvdfs.toml
دون تعبئة الصورة فعليًا، استخدم العلامة -D
أو --dry-run
.
من الممكن أيضًا توفير كل تكوينات ملف xdvdfs.toml
build-image
في سطر الأوامر مباشرةً.
-O
لتوفير حقل output
-m :
لتوفير قاعدة الخريطة. يمكن تكرار ذلك ومطابقته بالترتيب المحدد. يمكن أيضًا دمجها مع --dry-run
لاختبار تعيينات مختلفة.
لتحويل مجموعة من خيارات سطر الأوامر إلى build-image
إلى ملف xdvdfs.toml
، استخدم الأمر xdvdfs image-spec from
الأمر بنفس الوسائط.
# Outputs equivalent `xdvdfs.toml` to stdout
$ xdvdfs image-spec from -O dist/image.iso -m " bin:/ " -m " assets:/{0} "
# Outputs equivalent `xdvdfs.toml` to a file
$ xdvdfs image-spec from -O dist/image.iso -m " bin:/ " -m " assets:/{0} " xdvdfs.toml
يمكن بعد ذلك استخدام ملف المواصفات الذي تم إنشاؤه مع build-image
.
لفك ضغط الصورة، قم بتشغيل:
$ xdvdfs unpack < path to image > [optional output path]
يدعم xdvdfs-cli
أدوات مساعدة إضافية للاستخدام مع الصور.
يأمر | فعل |
---|---|
xdvsfs ls | يسرد الملفات الموجودة في الدليل المحدد، افتراضيًا إلى الجذر |
xdvdfs tree | طباعة قائمة بكل ملف داخل الصورة |
xdvdfs md5 | يطبع مجاميع md5 لملفات محددة، أو كل ملف، داخل الصورة |
xdvdfs checksum [path to img1]... | يحسب المجموع الاختباري لجميع محتويات الصورة للتحقق من تكاملها مع الصور الأخرى |
xdvdfs info | يطبع معلومات البيانات التعريفية لإدخال الدليل المحدد أو وحدة التخزين الجذرية |
xdvdfs copy-out | نسخ ملف أو دليل واحد من الصورة المقدمة |
xdvdfs-core
هي مكتبة للعمل مع بيانات تعريف XDVDFS.
مثال بسيط لقراءة ملف من مسار معين هو:
async fn read_from_path ( xiso : & Path , file_path : & str ) -> Box < [ u8 ] > {
let mut xiso = std :: fs :: File :: open ( xiso ) . unwrap ( ) ;
let volume = xdvdfs :: read :: read_volume ( & mut xiso ) . await . unwrap ( ) ;
let file_dirent = volume . root_table . walk_path ( & mut xiso , file_path ) . await . unwrap ( ) ;
let data = file_dirent . node . dirent . read_data_all ( & mut xiso ) . await . unwrap ( ) ;
data
}
هذه المكتبة تدعم no_std. يمكن تعريف أجهزة الحظر المخصصة من خلال تطبيق السمات الموجودة في xdvdfs::blockdev
.
بدون ميزة alloc
، يتم دعم ميزات بيانات التعريف الأساسية فقط. تعمل ميزة alloc
على تمكين العديد من وظائف الأداة المساعدة التي تتطلب التخصيص (مثل read_data_all
أعلاه.
يوفر الكود المصدري لـ xdvdfs-cli مثالاً أكثر تفصيلاً لكيفية استخدام xdvdfs-core في بيئة بها std.
لاحظ أن xdvdfs غير مستقر حاليًا لواجهة برمجة التطبيقات (API)، وبعد اتباع semver مع الإصدار الرئيسي 0، قد يتضمن كل إصدار ثانوي تغييرات جذرية وقد لا يتضمن ذلك.