#文件管理命令
YFS采用了与一般文件系统类似的文件操作命令管理YFS目录、文件。
# cat
本命令将YFS文件以二进制模式打印到标准输出。
Note:
本命令属于实验室特性。
YFS文件多为二进制数据,不建议直接将文件内容输出,可能输出乱码,引起shell会话异常。
本命令可用于在非交互模式下,将文件数据流通过管道重定向到其他工具处理。
命令格式:
cat filename
# cd
本命令用于切换工作目录,命令格式:
cd path
path
新的工作目录路径,相对、绝对路径均可,仅支持YFS路径,不可省略。
# cin
本命令用于向YFS文件写入数据流。
Warn:
本命令属于实验室特性且为高危操作。
本命令会改变YFS文件的大小、丢失数据,请勿在生产环境使用,请勿用于操作数据库文件、业务数据等。
命令格式:
cin [-e] [-s size] filename
- -e: 自动扩展文件,默认不扩展。
- -s: 开始写入的偏移,默认为 0。
1024
、1K
、1M
、1G
都是合法的size格式。
该指令以二进制模式读取标准输入,写入到YFS的文件中,目标文件必须存在。写入数据长度由标准输入流决定。
如未指定-e
,目标文件不会自动扩展,请确保写入数据不超过文件尾部,否则报错。如指定-e
,则文件会随着数据写入自动按512字节扩展,输入流长度不满足512字节对齐时,未写入位置数据未定义。
请在非交互模式下,配合管道使用该指令,不支持交互模式使用该指令。
示例
# 请在 Linux shell 中,以 yfscmd 命令行模式执行,通过 `|` 管道为 yfscmd cin 输入数据流
# 从 DG0/data 文件 1K 处写入 10M 数据,内容为 0,文件自动扩展
$ dd if=/dev/zero bs=1M count=10 | yfscmd cin -e -s 1K DG0/data
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.161797 s, 64.8 MB/s
# cp
本命令用于复制文件或递归复制目录,命令格式:
cp src dst
src
源路径,可以是YFS或本地文件系统的文件或目录,不可省略。
dst
目标路径, 可以是YFS或本地文件系统的文件或目录。不可省略,且dst不能已存在。
与Linux Shell的cp命令不同的是,本cp命令不会推断dst路经,用户需要明确的指定新文件或文件夹。例如,运行cp 1.txt newdir/
命令时,如newdir目录不存在将创建名称为newdir的文件,如newdir目录已存在则报错。因此执行本cp命令应该明确地指出dst路径,例如cp 1.txt newdir/2.txt
。
yfscmd支持以下方向的复制:
- YFS到本地文件系统。
- YFS到YFS。
- 本地文件系统到YFS。
Note:
如需执行本地文件系统到本地文件系统的复制,请使用Linux Shell的
cp
命令。
yfscmd通过路径中的根目录符号确定参数的文件系统类型:
+
:YFS 路径,yfscmd中的所有相对路径都会转换为YFS路径。/
:本地文件系统路径。
由于 yfscmd 中相对路径都会转换为 YFS 路径,如需指定参数为本地文件系统路径,须以绝对路径形式指定。
例如 /local/fs/path
会被识别为本地文件系统路径, file
或者 +DG0/file
都会被识别为YFS路径。
# file
本命令用于查看YFS文件元信息。
Note:
本命令属于实验室特性。
命令格式:
file filename
示例
YFSCMD > file data
fileCtrl = {
blockHead = {
checksum = 0
changeNum = 40
latch.status = 0
blockId = 257
lsn = 14
blockSize = 4096
type = 4
}
fd = 257
size = 1048576
auCnt = 2
dataCpyCnt= 1
metaCpyCnt= 1
createTime= 1721329555179151
deleteTime= 0
strpwdth = 0
redundancy= 0
used = 1
type = 0
count = 2
indirAuBlocks= 0
}
# help
本命令用于显示帮助信息,命令格式:
help [cmd]
cmd
yfscmd子命令,可省略,省略时显示子命令清单。
# ls
本命令用于打印文件清单,命令格式:
ls [-l] [-d] [path]
- -l: longformat, 显示详细信息。
- -d: 如果参数为目录,显示目录自身详情,而非显示目录内容详情。
path
打印该路径下文件清单。可省略,省略则默认为当前工作目录。
# md5sum
本命令计算YFS文件的md5sum。
Note:
本命令属于实验室特性,且依赖于Linux系统的
md5sum
工具,如系统未安装该工具则使用md5sum命令将报错。
命令格式:
md5sum filename
示例
YFSCMD > md5sum DG0/data
f1c9645dbc14efddc7d8a322685f26eb *-
# mkdir
本命令用于创建目录,命令格式:
mkdir dir
dir
创建的目录名,不可与现有文件对象重名,不可省略。
如需在其他工作目录下创建目录,须指定目标目录路径,仅支持YFS路径。
# mv
本命令用于重命名和移动文件或目录。
Warn:
高危操作,请勿用于操作数据库文件、业务数据等,请勿在生产环境使用该指令。
如有数据备份等需求,请使用YashanDB的备份恢复组件。
命令格式:
mv src dst
src
原文件名或路径,路径须为YFS路径,不可省略。
dst
新文件名或路径,路径须为YFS路径,且该不能与现有文件对象重复,不可省略。
# pwd
本命令用于显示当前工作目录,命令格式:
pwd
# rm
本命令用于删除目录或文件。
Warn:
高危操作,请勿用于操作数据库文件、业务数据等,请勿在生产环境使用该指令。
删除数据库文件,请使用YashanDB对应的表空间、归档管理指令。
命令格式:
rm [-r] path
- -r: 如果 path 是目录,递归删除。
path
删除的目录或文件名,不可省略。对于非空目录,需指定-r
参数进行递归删除。
# touch
本命令在YFS中创建文件,大小为0。
Note:
本命令属于实验室特性。
命令格式:
touch filename
# truncate
本命令调整YFS文件大小,扩展文件时,新扩展的区域数据未定义,缩小文件时,尾部数据被丢弃。
Warn:
本命令属于实验室特性且为高危操作。
本命令会改变YFS文件的大小、丢失数据,请勿在生产环境使用,请勿用于操作数据库文件、业务数据等。
如需调整数据文件大小,请通过YashanDB的指令操作。
命令格式:
TRUNCATE [-q] -s size filename
- -q: 静默模式,不提示数据风险。
- -s: 调整文件大小,
1024
、1K
、1M
、1G
都是合法的size格式。
示例
YFSCMD > truncate -s 1M data
Resize data from 10.00MB to 1.00MB? May lost data!
[Y/n] Y
YFSCMD > ll data
Type Time Size Space Name
FILE 2024-07-18 07:05:55 1.00MB 2.00MB data
# vim
本命令用于编辑YFS文件。
Warn:
本命令属于实验室特性且为高危操作。
本命令依赖于Linux系统的
vim
,使用本命令会改变YFS文件的大小、丢失数据,请勿在生产环境使用,请勿用于操作数据库文件、业务数据等。
命令格式:
vim filename
该指令仅接受1个YFS文件路径。
待编辑的文件会被复制到本机/tmp
目录下的一个临时文件,编辑完毕后,需要您同意用修改的文件覆盖YFS中的原文件,如此时取消则所有修改都会被丢弃,YFS中的原文件无变化。
由于该指令会发生2次YFS和本地文件系统的文件复制,如果待编辑文件较大,文件导出耗时较长,不建议编辑太大的文件。
如果编辑后文件大小发生变化,yfscmd会自动将其用0填充为512字节整倍数大小。
示例
YFSCMD > vim 1.txt
your temp file here: /tmp/yfs-edit.IOVZ3F
cp OK: YFS:+DG0/1.txt --> SYS:/tmp/yfs-edit.IOVZ3F
# 弹出 vim 界面,编辑后保存退出
file +DG0/1.txt exists, overwrite?
[Y/n] Y
overwrite +DG0/1.txt .
Warning: File size 13 not aligned to 512, auto resize.
cp OK: SYS:/tmp/yfs-edit.IOVZ3F --> YFS:+DG0/1.txt