#文件管理命令

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。10241K1M1G都是合法的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: 调整文件大小,10241K1M1G都是合法的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
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流