注意

本文档适用于 Ceph 的开发版本。

cephfs-shell -- 与 CephFS 交互的类 Shell 工具

概要

cephfs-shell [options] [command]
cephfs-shell [options] -- [command, command,…]

描述

CephFS Shell 提供了可直接与 Ceph 文件系统交互的类 shell 命令。

该工具既可以在交互模式下使用,也可以在非交互模式下使用。在前者模式下,cephfs-shell 会打开一个 shell 会话,在给定命令执行完成后,它会打印提示符并无限期等待。当 shell 会话结束时,cephfs-shell 会以最后执行命令的返回值退出。在非交互模式下,cephfs-shell 会执行一个命令,并在命令执行完成后立即退出,退出时返回该命令的返回值。

CephFS Shell 的行为可以通过 cephfs-shell.conf 进行调整。有关详细信息,请参阅 CephFS Shell 配置文件

选项

-b, --batch FILE

批处理文件路径。

-c, --config FILE

cephfs-shell.conf 的路径

-f, --fs FS

要挂载的文件系统名称。

-t, --test FILE

用于测试的 FILE 中的记录文件路径

注意

运行 cephfs-shell 需要最新版本的 cmd2 模块。如果 CephFS 是通过源代码安装的,请在构建目录中执行 cephfs-shell。也可以使用 virtualenv 如下执行:

[build]$ python3 -m venv venv && source venv/bin/activate && pip3 install cmd2 colorama
[build]$ source vstart_environment.sh && source venv/bin/activate && python3 ../src/tools/cephfs/shell/cephfs-shell

命令

注意

除了 Ceph 文件系统,CephFS Shell 命令还可以直接与本地文件系统交互。为此,必须在 CephFS Shell 命令前加上 !(感叹号)。

用法

!<cephfs_shell_command>

例如,

CephFS:~/>>> !ls # Lists the local file system directory contents.
CephFS:~/>>> ls  # Lists the Ceph File System directory contents.

mkdir

创建目录(如果它们尚不存在)。

用法

mkdir [-option] <directory>…

  • directory - 要创建的目录名称。

选项
-m MODE

设置新目录的访问模式。

-p, --parent

根据需要创建父目录。指定此选项时,如果目录已存在,则不会报告错误。

put

将文件/目录从本地文件系统复制到 Ceph 文件系统。

用法

put [options] <source_path> <target_path>

  • source_path - 要复制到 cephfs 的本地文件/目录路径。
    • 如果 . 则复制本地工作目录中的所有文件/目录。

    • 如果 - 则从 stdin 读取输入。

  • target_path - 文件/目录要复制到的远程目录路径。
    • 如果 . 则文件/目录被复制到远程工作目录。

选项
-f, --force

如果目标已存在,则覆盖目标。

get

将文件从 Ceph 文件系统复制到本地文件系统。

用法

get [options] <source_path> <target_path>

  • source_path - 要复制到本地文件系统的远程文件/目录路径。
    • 如果 . 则复制远程工作目录中的所有文件/目录。

  • target_path - 文件/目录要复制到的本地目录路径。
    • 如果 . 则文件/目录被复制到本地工作目录。

    • 如果 - 则将输出写入 stdout。

选项
-f, --force

如果目标已存在,则覆盖目标。

ls

列出当前工作目录中的所有文件和目录。

用法

ls [option] [directory]…

  • directory - 要列出其文件/目录的目录名称。
    • 默认情况下,列出当前工作目录的文件/目录。

选项
-l, --long

以长格式列出 - 显示权限

-r, --reverse

反向排序

-H

易读格式

-a, -all

忽略以 . 开头的条目

-S

按文件大小排序

cat

连接文件并打印到标准输出

用法

cat <file>….

  • file - 文件名

ln

为现有文件添加硬链接,或为现有文件或目录创建符号链接。

用法

ln [options] <target> [link_name]

  • target - 要创建链接的文件/目录

  • link_name - 指向 target 的链接名称 link_name

选项
-s, --symbolic

创建符号链接

-v, --verbose

打印每个链接文件的名称

-f, --force

强制创建链接/符号链接

cd

更改当前工作目录。

用法

cd [directory]

  • directory - 路径/目录名称。如果未提及目录,则更改为根目录。
    • 如果为 ‘.’,则移至当前目录的父目录。

cwd

获取当前工作目录。

用法

cwd

quit/Ctrl + D

关闭 shell。

chmod

更改文件/目录的权限。

用法

chmod <mode> <file/directory>

mv

将文件/目录从源移动到目标。

用法

mv <source_path> <destination_path>

rmdir

删除目录。

用法

rmdir <directory_name>…..

rm

删除文件。

用法

rm <file_name/pattern>…

write

创建并写入文件。

用法

write <file_name> <Enter Data> Ctrl+D Exit。

lls

列出指定目录中的所有文件和目录。如果未提及路径,则列出当前本地目录的文件和目录

用法

lls <path>…..

lcd

进入给定的本地目录。

用法

lcd <path>

lpwd

打印当前本地目录的绝对路径。

用法

lpwd

umask

设置和获取文件模式创建掩码

用法

umask [mode]

alias

定义或显示别名

用法

alias [name] | [<name> <value>]

  • name - 要查找、添加或替换的别名名称

  • value - 别名将解析为什么(如果添加或替换),这可以包含空格,无需加引号

run_pyscript

在控制台内运行 python 脚本文件

用法

run_pyscript <script_path> [script_arguments]

  • 可以在此脚本中使用 cmd(“your command”) 执行控制台命令。但是,您不能在此脚本中运行嵌套的“py”或“pyscript”命令。包含空格的路径或参数必须用引号括起来。

注意

对于 cmd2 版本 0.9.13 或更低版本,此命令可用作 pyscript

py

调用 python 命令、shell 或脚本

用法

py <command>:执行 Python 命令。py:进入交互式 Python 模式。

shortcuts

列出可用的快捷方式(别名)

用法

shortcuts

history

查看、运行、编辑和保存以前输入的命令。

用法

history [-h] [-r | -e | -s | -o FILE | -t TRANSCRIPT] [arg]

选项
-h

显示此帮助消息并退出

-r

运行选定的历史记录项

-e

编辑然后运行选定的历史记录项

-s

脚本格式;无分隔线

-o FILE

将命令输出到脚本文件

-t TRANSCRIPT

将命令和结果输出到记录文件

unalias

取消设置别名

用法

unalias [-a] name [name …]

  • name - 要取消设置的别名名称

选项
-a

删除所有别名定义

set

设置可设置的参数或显示参数的当前设置。

用法

set [-h] [-a] [-l] [settable [settable …]]

  • 不带参数调用以获取可设置参数及其值的列表。

选项
-h

显示此帮助消息并退出

-a

也显示只读设置

-l

描述参数的功能

edit

在文本编辑器中编辑文件。

用法

edit [file_path]

  • file_path - 要在编辑器中打开的文件路径

run_script

运行脚本文件中的命令,该文件编码为 ASCII 或 UTF-8 文本。脚本中的每个命令都应由换行符分隔。

用法

run_script <file_path>

  • file_path - 指向脚本的文件路径

注意

对于 cmd2 版本 0.9.13 或更低版本,此命令可用作 load

shell

执行命令,就像在操作系统提示符下一样。

用法

shell <command> [arguments]

locate

在文件系统中查找项目

用法

locate [options] <name>

选项
-c

计算找到的项目数

-i

忽略大小写

stat

显示文件状态。

用法

stat [-h] <file_name> [file_name …]

选项
-h

显示帮助消息

snap

创建或删除快照

用法

snap {create|delete} <snap_name> <dir_name>

  • snap_name - 要创建或删除的快照名称

  • dir_name - 应在其下创建或删除快照的目录

setxattr

设置文件的扩展属性

用法

setxattr [-h] <path> <name> <value>

  • path - 文件路径

  • name - 要获取或设置的扩展属性名称

  • value - 要设置的扩展属性值

选项
-h, --help

显示帮助消息

getxattr

获取与路径关联的名称的扩展属性值

用法

getxattr [-h] <path> <name>

  • path - 文件路径

  • name - 要获取或设置的扩展属性名称

选项
-h, --help

显示帮助消息

listxattr

列出与路径关联的扩展属性名称

用法

listxattr [-h] <path>

  • path - 文件路径

选项
-h, --help

显示帮助消息

df

显示可用磁盘空间量

用法

df [-h] [file [file …]]

  • file - 文件名

选项
-h, --help

显示帮助消息

du

显示目录的磁盘使用情况

用法

du [-h] [-r] [paths [paths …]]

  • paths - 目录名称

选项
-h, --help

显示帮助消息

-r

所有目录的递归磁盘使用情况

quota

目录的配额管理

用法

quota [-h] [--max_bytes [MAX_BYTES]] [--max_files [MAX_FILES]] {get,set} path

  • {get,set} - 配额操作类型。

  • path - 目录名称。

选项
-h, --help

显示帮助消息

--max_bytes MAX_BYTES

设置此目录下数据的最大累积大小

--max_files MAX_FILES

设置此目录树下的文件总数

CephFS Shell 配置文件

默认情况下,CephFS Shell 会在环境变量 CEPHFS_SHELL_CONF 提供的路径中查找 cephfs-shell.conf,然后在其用户主目录 (~/.cephfs-shell.conf) 中查找。

目前,CephFS Shell 继承了其依赖项 cmd2 的所有选项。因此,这些选项可能会随您系统上安装的 cmd2 版本而异。有关这些选项的描述,请参阅 cmd2 文档。

以下是 cephfs-shell.conf 示例

[cephfs-shell]
prompt = CephFS:~/>>>
continuation_prompt = >

quiet = False
timing = False
colors = True
debug = False

abbrev = False
autorun_on_edit = False
echo = False
editor = vim
feedback_to_output = False
locals_in_py = True

退出代码

cephfs shell 返回以下退出代码

错误类型

退出代码

杂项

1

键盘中断

2

操作不允许

3

权限被拒绝

4

无此文件或目录

5

I/O 错误

6

设备上没有剩余空间

7

文件已存在

8

无可用数据

9

无效参数

10

传输端点不支持此操作

11

范围错误

12

操作将阻塞

13

目录非空

14

不是目录

15

超出磁盘配额

16

管道损坏

17

传输端点关闭后无法发送

18

连接中止

19

连接被拒绝

20

连接重置

21

函数调用被中断

22

文件

~/.cephfs-shell.conf

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入