TiDB Cloud Filesystem でファイルとディレクトリを操作する
TiDB Cloud Filesystem では、TiDB Cloud コンソール でファイルおよびディレクトリのメタデータを参照したり、TiDB Cloud CLI (ti) を使用して、ファイルシステムをマウントせずにファイルのアップロード、ダウンロード、読み取り、整理、検索を行ったりできます。すべてのコマンドとオプションについては、ti fs リファレンスを参照してください。
ファイルシステムをマシンにマウントすると、ローカルファイルシステムと同じようにファイルやディレクトリを操作できます。
前提条件
以下の前提条件は CLI 操作に適用されます。TiDB Cloud コンソールでファイルメタデータを参照するだけでよい場合は、ファイルを表示するを参照してください。
- TiDB Cloud CLI をインストールする。
- ファイルシステムを作成するか、既存のファイルシステムへのアクセス権を取得します。
- ファイルシステムを選択し、そのトークンを
tiから利用できるようにします。利用可能なアクセス方法については、既存のファイルシステムにアクセスするを参照してください。
ファイルを表示する
TiDB Cloud コンソールまたは TiDB Cloud CLI を使用して、ファイルやディレクトリを参照し、そのメタデータを表示できます。
- TiDB Cloud コンソール で組織の File Systems ページに移動し、クラウドプロバイダーとリージョンを選択してから、対象のファイルシステム名をクリックします。
- 左側のナビゲーションペインで Files をクリックします。このページには、ディレクトリとファイルが、そのタイプ、サイズ、更新時刻とともに一覧表示されます。
- ディレクトリを展開して内容を参照したり、Search を使用して表示中のファイルツリーを絞り込んだり、ファイル名をクリックしてそのメタデータを表示したりできます。
コンソールにはファイルメタデータが表示されます。ファイル内容を読み取ったり、ファイルやディレクトリを変更したりするには、CLI コマンドを使用するか、ファイルシステムをマウントしてください。
ディレクトリの内容を一覧表示します。
ti fs list-files --path /reports --output text
出力例:
NAME TYPE SIZE MTIME
archive dir 0 0
report.md file 23 0
ファイルまたはディレクトリのメタデータを確認します。
ti fs describe-file --path /reports/report.md
ファイルをアップロードおよびダウンロードする
ローカルファイルをファイルシステムにアップロードします。
ti fs copy-file \
--from-local ./report.md \
--to-remote /reports/report.md
ファイルシステムからファイルをダウンロードします。
ti fs copy-file \
--from-remote /reports/report.md \
--to-local ./downloads/report.md \
--create-parents
copy-file を使用すると、ファイルシステム内でファイルまたはディレクトリをコピーしたり、標準入力または標準出力を介してデータをストリーミングしたり、ファイルに追記したり、中断された転送を再開したりすることもできます。
ディレクトリを再帰的にコピーするには、--recursive を使用します。サポートされているすべてのコピー操作とオプションについては、copy-file リファレンスを参照してください。
ファイルを読み取る
ファイルの内容全体を読み取ります。
ti fs read-file --path /reports/report.md
このコマンドは、ファイル内容を JSON でラップせずに、標準出力へ直接書き出します。
ファイルの一部だけを読み取るには、--offset と --length を使用します。たとえば、次のコマンドは先頭の 1024 バイトを読み取ります。
ti fs read-file \
--path /reports/report.md \
--offset 0 \
--length 1024
ファイルとディレクトリを整理する
ディレクトリを作成します。
ti fs create-directory --path /reports/archive
ファイルを別のパスへ移動します。
ti fs move-file \
--from-remote /draft.md \
--to-remote /reports/final.md
ファイルまたはディレクトリを削除します。
ti fs delete-file --path /scratch --recursive
POSIX スタイルのメタデータやリンクが必要なワークフローでは、chmod-file、create-symlink、create-hardlinkも使用できます。
ファイルと内容を検索する
内容に基づいてファイルを検索するには、search-file-content を使用します。
ti fs search-file-content \
--path /reports \
--pattern "TODO"
--pattern は正規表現や glob ではなく、テキストクエリです。--limit を使用して、結果の最大件数を制御できます。
詳細については、search-file-content リファレンスを参照してください。
内容ではなくファイル自体について何らかの条件が分かっている場合は、find-files を使用します。ファイル名、タイプ、タグ、サイズ、更新時刻で絞り込めます。
たとえば、stage=review のタグが付いた Markdown ファイルを検索するには、次のようにします。
ti fs find-files \
--path /reports \
--file-name-pattern "*.md" \
--tag stage=review
タグは、copy-file --tag key=value を使用してファイルをアップロードするときに設定します。同じパスに対して後からアップロード時に --tag を指定すると、以前のタグに追加されるのではなく、以前のタグが置き換えられます。
結果には一致したパスが一覧表示されます。空のテーブルは、コマンドが失敗したことではなく、一致するものがなかったことを意味します。
利用可能なすべてのフィルターについては、find-files リファレンスを参照してください。
スクリプトでコマンド出力を使用する
コマンド出力を使用する前に、終了ステータスを確認してください。read-file と copy-file --to-stdout は、CLI メタデータではなくファイル内容をストリーミングします。これらの内容をキャプチャする場合は、stderr を分離してください。
ti v0.2.6 および v0.2.7 では、create-directory が --output json を指定していても、JSON の結果の前に created ... 行を出力することがあります。その出力は単一の JSON ドキュメントとしては解析できません。終了ステータスを確認したうえで、describe-file または list-files を使ってディレクトリを確認してください。スクリプトでその出力形式に依存する前に、インストール済みバージョンの出力形式を確認してください。
次のステップ
- ファイルシステムをマウントする: ローカルディレクトリと既存のローカルツールを通じてファイルシステムデータを操作します。
- ファイルシステムのレイヤーとチェックポイントを管理する: 分離された変更を作成して確認し、ベースファイルシステムに適用する前に検証します。
- マシン間でファイルシステムを共有する: 別のマシンまたは環境にファイルシステムへのアクセス権を付与します。
- TiDB Cloud Filesystem CLI コマンドリファレンス: 完全なコマンド構文とオプションを確認します。