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]
그러면 입력 디렉터리와 1:1로 일치하는 iso가 생성됩니다.
기존 ISO 이미지에서 이미지를 다시 압축할 수 있습니다.
$ xdvdfs pack < input-image > [optional output path]
그러면 입력 이미지와 1:1로 일치하는 ISO가 생성됩니다.
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의 소스 코드는 std 환경에서 xdvdfs-core를 사용하는 방법에 대한 자세한 예를 제공합니다.
xdvdfs는 현재 API가 안정적이지 않으며 주요 버전 0의 semver 이후 각 부 버전 범프에는 주요 변경 사항이 포함될 수도 있고 포함되지 않을 수도 있습니다.