#文件管理命令
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 [-C] src dst
-C
为源文件以克隆方式在同一磁盘组内创建一个即时副本(后文将称该类副本为“克隆文件”)。
在创建克隆文件时,并不会即刻复制文件数据,而是仅与源文件共享存储分配单元。同时,系统会自动为克隆文件创建一次快照。
仅当对源文件或克隆文件执行写入操作时,克隆文件才会进行数据复制,即采用写时复制(COW, Copy-on-Write)机制。COW期间会阻塞部分写操作。
Note:
仅全新安装的YashanDB v27.1.1及以上版本完整支持文件克隆功能。若由旧版本升级至YashanDB v27.1.1或以上版本,存量磁盘组将无法使用相应功能。
src
源路径,可以是YFS或本地文件系统的文件或目录,不可省略。
dst
目标路径, 可以是YFS或本地文件系统的文件或目录。不可省略,且dst不能已存在。
指定-C时,src与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 // 删除时间(时间戳,0表示未删除)
strpwdth = 0 // 是否激活条带化
redundancy= 0 // 冗余类型
used = 1 // 是否使用
type = 0 // 文件类型
count = 2 // 直接分配单元数量
indirAuBlocks= 0 // 间接存储分配单元块数量
referenced = 1 // 是否存在或存在过共享存储分配单元,1表示是,0表示否
snapshot = 1 // 是否存在关联快照,非0表示存在快照且数值为最近一次快照ID,0表示不存在
}
# help
本命令用于显示帮助信息,命令格式:
help [cmd]
cmd
yfscmd子命令,可省略,省略时显示子命令清单。
# ls
本命令用于打印文件清单,命令格式:
ls [-l] [-d] [-s] [path]
- -l/s:longformat, 显示详细信息,如果当前目录为根目录,则查询结果同命令
lsdg。 - -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参数进行递归删除。
# reset
本命令用于将文件快速闪回到最近一次快照的状态。闪回后,原文件与快照文件共享存储分配单元数据。
固定只能闪回到最近一次创建的快照,无法指定快照版本。
Note:
仅全新安装的YashanDB v27.1.1及以上版本完整支持文件闪回功能。若由旧版本升级至YashanDB v27.1.1或以上版本,存量磁盘组将无法使用相应功能。
命令格式:
reset filename
filename
被闪回的文件,不可省略。必须指定为存在快照的文件。
示例
YFSCMD > reset +DG0/clone_file
# snapshot
本命令用于为文件创建快照。
每个文件只能记录一个快照版本,多次创建仍只会关联最后一次创建的快照。
Note:
仅全新安装的YashanDB v27.1.1及以上版本完整支持快照功能。若由旧版本升级至YashanDB v27.1.1或以上版本,存量磁盘组将无法使用相应功能。
命令格式:
snapshot filename
filename
需要创建快照的文件,不可省略。
示例
YFSCMD > snapshot +DG0/datafile
# 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

