xdvdfs
คือชุดเครื่องมือสำหรับการโต้ตอบกับอิมเมจ XDVDFS/XISO
xdvdfs-cli
เป็นเครื่องมือบรรทัดคำสั่งสำหรับการโต้ตอบกับไฟล์ xiso
หากสินค้าได้รับการตั้งค่าอย่างถูกต้องในเส้นทาง สามารถติดตั้งได้โดย:
$ cargo install xdvdfs-cli
มิฉะนั้น สามารถรันจากรูทของเวิร์กสเปซเป็นโปรเจ็กต์ดีฟอลต์ได้
การแจกแจงแบบไบนารีของ xdvdfs-cli ยังมีอยู่ในรุ่น GitHub อีกด้วย
การรัน xdvdfs
โดยไม่มี args จะแสดงหน้าจอวิธีใช้ โดยแสดงคำสั่งย่อยที่รองรับ:
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 แต่ละเวอร์ชันรองอาจมีหรือไม่มีการเปลี่ยนแปลงที่เสียหาย