運用・管理 / ファイル操作
本製品におけるファイルの操作方法について説明します。ローカルファイル
本製品の記憶デバイス上に存在するファイルを「ローカルファイル」と呼びます。本製品では、物理的な記憶デバイス上にファイルシステムが構築されており、各種デバイス上のデータを「ファイル」として統一的にアクセスすることが可能です。
本製品のファイルシステムは、UNIXやMS-DOS/Windowsとよく似た階層型のファイルシステムです。ディレクトリー区切りがスラッシュ(/)である点や、パス名の大文字小文字を区別する点はUNIXに準じていますが、デバイスごとにルートディレクトリーを持つ点はMS-DOS/Windowsに似ています。
デバイス
本製品は、システム再起動後もデータが保持される記憶デバイスとして、フラッシュメモリーとNVS(Non-Volatile Storage)を搭載しています。また、取り外し可能な外部記憶装置として、USBメモリーにも対応しています。それぞれの特長は次のとおりです。| フラッシュメモリー | flash | 電源を切っても情報が保持される比較的大容量の記憶装置。起動用のファームウェアイメージファイルや設定スクリプトファイルなどを保存するために使う。また、例外発生時(プロセスが異常終了したとき)に生成されるコアダンプファイル(*.tgz)や永続ログ(permanentログ)もフラッシュメモリーに保存される。一般的なコンピューターのハードディスクに相当する |
| NVS(Non-Volatile Storage) | nvs | バッテリーバックアップされた比較的小容量の記憶装置。各種設定情報を保存するために使う |
| USBメモリー | usb | 電源を切っても情報が保持される着脱可能な記憶装置。ファームウェアイメージファイルや設定スクリプトファイルの持ち運び、バックアップ、インストールなどに使う。サポートするファイルシステム(フォーマット)はFAT32、ext2、ext3、ext4。ただし起動用ファームウェアを置く場合はFAT32のみサポート |
これらのデバイス上にはファイルシステムが構築されており、ファイル単位でデータにアクセスすることが可能です。
ファイルとディレクトリー
各デバイス上のファイルシステムは、ファイルとディレクトリーから構成されています。ファイルはプログラムやテキストなど具体的なデータを格納する入れ物であり、ディレクトリーは他のファイルやディレクトリーを整理するための入れ物です。ファイル名、ディレクトリー名の命名規則は一般的なUNIXファイルシステムに準じています。以下におもな特長を列挙します。大文字小文字を区別する点には特にご注意ください。
- 大文字小文字を区別する
たとえば、test.cfg、Test.cfg、test.CFGは、それぞれ別のファイルになります。
- さまざまな文字を使用可能
ただし、日本語文字と下記の記号は使用できません。
空白 ! " # $ % & ' ( ) * + , / ; < = > ? [ \ ] ^ ` { | }
- ファイル名の最大長は約250文字(254文字)
ただし、あまり長い名前を付けると入力が手間がかかるので(CLIにファイル名の補完機能はありません)、実運用上は16文字程度にすることをおすすめします。
- ファイル名の形式は自由
ファイル名は一般的にベース名と拡張子をドット(.)で区切った形式としますが、ドットは複数あっても、まったくなくてもかまいません。たとえば、basename.txt、basename.ex1.ex2、basename-onlyはいずれも有効な名前です。
ただし、一部のファイルについては特定の拡張子を前提としています。次におもな例を挙げます。
表 2 拡張子 ファイルの種類 rel ファームウェアのイメージファイル cfg コンフィグファイル。設定を保存するだけであれば.cfgでなくてもよいが、boot config-fileコマンドで指定する起動時コンフィグ(スタートアップコンフィグ)の実体ファイルなどの場合は.cfgでなくてはならない scp スクリプトファイル。おもにトリガーから起動する core コアダンプファイル。例外発生時(プロセスが異常終了したとき)に自動生成されるファイルはこの拡張子を持つ
また、以下の名前は予約されているため、ファイル名としては使用できません。
- flash
- nvs
- tftp
- http
- scp
- sftp
- usb
- flash
- ドットファイル(隠しファイル)
名前の先頭にドット(.)が付いているファイルやディレクトリーは、「隠し属性」を持つものとして扱われます(ドットファイル)。ディレクトリー内容を表示するdirコマンドでは、allオプションを指定しないかぎり、隠し属性を持つファイルやディレクトリーは表示されません。
- 「.」と「..」
各ディレクトリーには、特殊な隠しディレクトリー「.」(ドット)と「..」(ドットドット)が暗黙のうちに存在しています。「.」はカレントディレクトリーを、「..」は親ディレクトリー(1階層上のディレクトリー)を表します。ただし、最上位のルートディレクトリーでは「..」と「.」は同じ意味になります。
- ディレクトリーもファイルの一種
ディレクトリーは、ファイルやディレクトリーを整理するという特殊な役割を持ちますがファイルの一種には変わりありません。したがって、ファイルとディレクトリーにはまったく同じ命名規則が適用されます。
ローカルパス表記
ローカルファイルシステム上のファイルやディレクトリーは、「ローカルパス」(パス)を使って表します。パスの表記には、大きく分けて次の3つの形式があります。DEVICE:/PATH |
デバイス名を含む絶対パス | 指定したデバイス(DEVICE)のルートディレクトリー(/)を起点とした、あいまいさのまったくない厳密なパス表記です。この形式を使えば、カレントディレクトリーがどこであるかにかかわらず、ファイルやディレクトリーを一意に識別できます |
/PATH |
デバイス名を含まない絶対パス | カレントディレクトリーの存在するデバイス(以下、カレントデバイスと呼びます)のルートディレクトリー(/)を起点としたパス表記です。同じ表記であっても、カレントデバイスがどこであるかによって、指し示されるファイルやディレクトリーが異なります |
PATH |
相対パス | カレントディレクトリーを起点としたパス表記です。同じ表記であっても、カレントディレクトリーがどこであるかによって、指し示されるファイルやディレクトリーが異なります |
ここで、
DEVICEは、前述した記憶デバイスの名前です。具体的にはflash、nvs、usbの3種類があります。また、
PATHは、各デバイス上におけるファイルやディレクトリーのパス名です。パス名は0個以上のパス要素(ファイル名かディレクトリー名)をスラッシュ(/)で区切って連結したものです。パス名の最後の要素はファイル名かディレクトリー名、それ以外の要素は必ずディレクトリー名になります(例:「/DIR1/DIR2/FILE3」、「DIR4/DIR5」)。
先頭にスラッシュ(/)を付けた場合はルートディレクトリーからの絶対パス、そうでない場合はカレントディレクトリーからの相対パスと解釈されます。
以下では、各表記について具体例を挙げながら説明します。
デバイス名を含む絶対パス
次の表記は、フラッシュメモリー上の絶対パス/bkup/070628.cfgを表します。
flash:/bkup/070628.cfg
ここで、bkupがディレクトリーであることは間違いありませんが、070628.cfgがファイルであるかディレクトリーであるかは、名前からは判別できません。これを確認するには、該当要素(ここでは070628.cfg)の存在するディレクトリー(ここではflash:/bkup)に対してdirコマンドを実行してみます。
awplus# dir flash:/bkup
312 -rw- Feb 28 2011 06:43:19 070628.cfg
ここでは、ファイル属性を表す「-rw-」欄の先頭文字が「-」なのでファイルと判断できます。同欄の先頭文字が「d」ならディレクトリーです(例「drwx」)。
なお、デバイス名の後には暗黙のうちにスラッシュ(/)が付加されます。すなわち、デバイス名から始まるパス表記は、つねに指定したデバイスのルートディレクトリー(/)を起点とする絶対パスとして扱われます。
たとえば、次のパス表記では、
PATH要素(bkup/ipbasic.cfg)の先頭にスラッシュがありません。そのため、一見したところ相対パスであるような印象を受けます。
flash:bkup/ipbasic.cfg
しかし、デバイス名flash:の後には暗黙のスラッシュが仮定されるため、実際には次の表記と同じ扱いを受けます。
flash:/bkup/ipbasic.cfg
さらに、デバイス名を単独で表記する場合はコロンを省略することもできますので、次の3つの表記も等価となります(フラッシュメモリー上のルートディレクトリーを指す)。
flash
flash:
flash:/
デバイス名を含まない絶対パス
次の表記は、カレントデバイス上の絶対パス/log/messagesを表します。
/log/messages
これは、カレントデバイスがflashなら「flash:/log/messages」、nvsなら「nvs:/log/messages」、usbなら「usb:/log/messages」を指し示します。
カレントデバイスとは、カレントディレクトリーの存在しているデバイスのことです(カレントディレクトリーはpwdコマンドで確認できます)。
相対パス
パス要素を1つだけ指定した次の表記は、相対パスのもっとも簡略な形式で、カレントディレクトリーに存在する指定した名前のファイルかディレクトリーを示します。
file_or_directory
次の表記は、カレントディレクトリーを起点とした相対パスtemp2/mynetwork.logを表します。
temp2/mynetwork.log
pwdコマンドで表示されるカレントディレクトリーが「flash:/temp」であるなら、この表記は「flash:/temp/temp2/mynetwork.log」を表します。pwdコマンドで表示されるカレントディレクトリーが「nvs:/」なら、この表記は「nvs:/temp2/mynetwork.log」を表します。
次の表記は、カレントディレクトリーを起点とした相対パス../../mylan.cfgを表しています。「..」は前述のとおり、各ディレクトリーに存在する特殊な隠しディレクトリーで、「1階層上のディレクトリー」を示します。したがって、../..は2階層上のディレクトリーを表します。
../../mylan.cfg
pwdコマンドで表示されるカレントディレクトリーが「flash:/home/zein」であるなら、この表記は「flash:/mylan.cfg」を表します。
ワイルドカード
deleteコマンドとdirコマンドでは、ローカルファイルのパス指定時に特殊文字の「*」(アスタリスク)を使うことで、複数のファイルを一度に指定することができます。これをワイルドカード指定と呼びます。これらのコマンドにおいて、アスタリスクはパス表記内での任意の文字列(空文字列を含む)を表します。
以下に例を示します。
次の表記は、カレントディレクトリーにあるすべてのファイル、ディレクトリーを表します(隠しファイルと隠しディレクトリーは除く。以下同様)。
*
次の表記は、カレントディレクトリーにある拡張子「.cfg」のファイル、ディレクトリーを表します。
*.cfg
次の表記は、フラッシュメモリー上の/logディレクトリーにあるすべてのファイル、ディレクトリーを表します。
flash:/log/*
次の表記は、フラッシュメモリーのルートディレクトリーにあるファイル、ディレクトリーのうち、先頭文字が「ABC」、その後に任意の文字列(空文字列も可)が続き、「5」が来た後にまた任意の文字列、さらにドットが来て、さらに任意の文字列が来て、最後に「t」が来るものを表します。具体的には「ABC-123456789.txt」や「ABC12345.t」、「ABC01A5AA.1rt」などが当てはまります。
flash:/ABC*5*.*t
次の表記は、1階層上のディレクトリーにある拡張子「.txt」を持つすべてのファイル、ディレクトリーを表します。
../*.txt
ローカルディレクトリーの操作
おもなディレクトリー操作についてコマンド例を示します。カレントディレクトリーを確認するには、pwdコマンドを使います。
ログイン直後のカレントディレクトリーはフラッシュメモリーのルートディレクトリー(flash:/)です。
awplus# pwd
flash:/
カレントディレクトリーを移動するには、cdコマンドを使います。
awplus# cd home/zein awplus# pwd flash:/home/zein awplus# cd .. awplus# pwd flash:/home awplus# cd flash:/log awplus# pwd flash:/log awplus# cd flash:/ awplus# pwd flash:/
ディレクトリーを作成するにはmkdirコマンドを使います。
awplus# mkdir tmp
Successful operation
ディレクトリーを移動するにはmoveコマンドを使います。
awplus# move tmp work
Moving..
Successful operation
moveコマンドはディレクトリー名を変更(リネーム)するときにも使います。
awplus# move work work2
Moving..
Successful operation
ディレクトリーを削除するにはrmdirコマンドを使います。
awplus# rmdir unused
Successful operation
ただし、rmdirコマンドでは、空でないディレクトリーを指定した場合はエラーになります。このようなときは、deleteコマンドでディレクトリー内のファイル、サブディレクトリーをすべて削除してから、もう一度rmdirコマンドを実行する必要があります。
あるいは、deleteコマンドをrecursiveオプション付きで実行すれば、指定したディレクトリー以下を一括削除できます。
awplus# delete recursive work2 Delete flash:/work2 and all of its contents? (y/n)[n]:y ↓ Deleting.. Successful operation
ローカルファイルの操作
おもなファイル操作についてコマンド例を示します。カレントディレクトリーのファイルとサブディレクトリーの一覧は、dirコマンドで表示できます。
awplus# dir
20593063 -rwx Jan 7 2013 00:46:55 x540-5.5.5-2.1.rel
594 -rw- Feb 26 2011 04:58:03 snmpv1.cfg
564 -rw- Feb 26 2011 04:57:28 basicip.cfg
472 -rw- Feb 26 2011 04:57:10 basicvlan.cfg
312 -rw- Feb 26 2011 04:56:41 default.cfg
特定ファイルの一覧を見たいときはワイルドカードを使います。
awplus# dir *.cfg
594 -rw- Feb 26 2011 04:58:03 flash:/snmpv1.cfg
564 -rw- Feb 26 2011 04:57:28 flash:/basicip.cfg
472 -rw- Feb 26 2011 04:57:10 flash:/basicvlan.cfg
312 -rw- Feb 26 2011 04:56:41 flash:/default.cfg
ファイルの内容を見るには、show fileコマンドを使います。ただし、show fileコマンドで見ることができるのはテキスト形式のファイル(.txt、.log、.cfgなど)だけです。
awplus# show file snmpv1.cfg | include ip
ip domain-lookup
no ip multicast-routing
ip address 172.16.10.1/24
ip address 172.21.10.1/24
ファイルを削除するにはdeleteコマンドを使います。ワイルドカード指定で複数ファイルをまとめて消すことも可能です。
awplus# del *.core Delete flash:nsm-xxxxxxxxxxx-X.Y.Z-1180494447.core? (y/n)[n]:y ↓ Deleting.. Delete flash:nsm-xxxxxxxxxxx-X.Y.Z-1180496473.core? (y/n)[n]:y ↓ Deleting.. Delete flash:nsm-xxxxxxxxxxx-X.Y.Z-1180504045.core? (y/n)[n]:y ↓ Deleting.. Delete flash:nsm-xxxxxxxxxxx-X.Y.Z-1180917976.core? (y/n)[n]:y ↓ Deleting.. Successful operation
ファイルをコピーするにはcopyコマンドを使います。
awplus# copy basicip.cfg basicip-backup.cfg
ファイルを移動するにはmoveコマンドを使います。
awplus# move fuga.txt /home/zein/doc
Moving..
Successful operation
moveコマンドはファイル名を変更(リネーム)するときにも使います。
awplus# move pote.txt bote.txt
Moving..
Successful operation
テキスト形式のファイルを編集するには、editコマンド(内蔵フルスクリーンテキストエディター)を使います。
awplus# edit myscript.cfg
AMFネットワークにおけるファイル操作
AMFネットワークでは、特殊な記法により他のAMFノードのファイルシステムを操作できます。詳しくは「AMF」の応用編をご覧ください。VCS構成におけるファイル操作
VCS構成時には、特殊な記法により他のVCSメンバーのファイルシステムを操作できます。詳しくは「バーチャルシャーシスタック(VCS)」の応用編をご覧ください。リモートファイル
本製品の記憶デバイス上に存在する「ローカルファイル」に対し、ネットワーク上の他のホストに存在するファイルを「リモートファイル」と呼びます。本製品では、各種ファイル操作コマンドにおいて、リモートファイルをローカルファイルとほぼ同様に扱うことができます。
リモートURL表記
本製品では、リモートファイルおよびディレクトリーの場所を、次に示す「リモートURL」(URL)形式で表します。- HTTPサーバー上のファイルおよびディレクトリー
http://HOST/PATH
- TFTPサーバー上のファイルおよびディレクトリー
tftp://HOST/PATH
- SCP(SSH)サーバー上のファイルおよびディレクトリー
scp://USER@HOST/PATH
- SFTP(SSH)サーバー上のファイルおよびディレクトリー
sftp://USER@HOST/PATH
ここで、
http、tftp、scp、sftpは、リモートファイルにアクセスするための方式(プロトコル)を表します。HOSTは、リモートホストのIPアドレス(IPv4/IPv6)またはホスト名です。PATHは、リモートホスト上におけるファイルやディレクトリーのパスです。パスの表記形式や意味合いは、使用するアクセス方式(プロトコル)やリモートホストの設定によって異なります。USERは、リモートホストにログインするためのユーザー名です。ログインを必要とするアクセス方式(プロトコル)でのみ有効です。リモートファイルの操作
以下では、リモートファイルを操作する具体的なコマンド例を示します。カレントディレクトリーにあるbasic.cfgをTFTPサーバーhiyoko.example.comにアップロードし、同サーバー上のファイルbasic.cfgとして保存する(バックアップする)には次のようにします。
awplus# copy basic.cfg tftp://hiyoko.example.com/basic.cfg
Copying..
Successful operation
TFTPによるファイルダウンロードを対話式に行うには、コピー元に「tftp」、コピー先に「flash」とだけ指定します。
awplus# copy tftp flash Enter source host name []:172.17.28.70 ↓ (TFTPサーバー) Enter source file name []:x540-5.5.5-2.1.rel ↓ (ダウンロード対象ファイル) Enter destination file name [x540-5.5.5-2.1.rel]: ↓ (ダウンロード後ファイル名。カッコ内の名前でよければ単にEnter) Copying........................................ Successful operation
TFTPによるファイルアップロードを対話式に行うには、コピー先に「tftp」とだけ指定します。以下の例ではコピー元ファイル名を明示していますが、単に「flash」などと指定すればコピー元ファイルのパスも対話式に入力できます。
awplus# copy test2345.cfg tftp Enter destination host name []:172.17.28.70 ↓ (TFTPサーバー) Enter destination file name [test2345.cfg]: ↓ (アップロード後ファイル名。カッコ内の名前でよければ単にEnter) Copying.. Successful operation
HTTPサーバーwww.example.com上のファイル/~zein/work/myconfig.cfgをダウンロードし、カレントディレクトリーのファイルmyconfig.cfgとして保存するには次のようにします。
awplus# copy http://www.example.com/~zein/work/myconfig.cfg myconfig.cfg
Copying..
Successful operation
HTTPによるファイルダウンロードを対話的に行うには、コピー元に「http」、コピー先に「flash」とだけ指定します。
awplus# copy http flash Enter source host name []:172.17.28.70 ↓ (HTTPサーバー) Enter source file name []:~zein/work/weekly.txt ↓ (ダウンロード対象ファイル) Enter destination file name [weekly.txt]: ↓ (ダウンロード後ファイル名。カッコ内の名前でよければ単にEnter) Copying.. Successful operation
SCPによるファイルダウンロードを対話式に行うには、コピー元に「scp」、コピー先に「flash」とだけ指定します。
awplus# copy scp flash Enter source host name []:zein@172.17.28.1 ↓ (SCP(SSH)サーバー。通常は「ユーザー名@」を前置する) Enter source file name []:tmp/test3456.cfg ↓ (ダウンロード対象ファイル) Enter destination file name [test3456.cfg]: ↓ (ダウンロード後ファイル名。カッコ内の名前でよければ単にEnter) Password:XXXXXXXX ↓ (SSHサーバーにログインするためのパスワード。実際には表示されません) Copying.. Successful operation
SCPによるファイルアップロードを対話式に行うには、コピー先に「scp」とだけ指定します。以下の例ではコピー元ファイル名を明示していますが、単に「flash」などと指定すればコピー元ファイルのパスも対話式に入力できます。
awplus# copy test4567.cfg scp Enter destination host name []:zein@172.17.28.1 ↓ (SCP(SSH)サーバー。通常は「ユーザー名@」を前置する) Enter destination file name [test4567.cfg]: ↓ (アップロード後ファイル名。カッコ内の名前でよければ単にEnter) Copying.. Successful operation
SSHサーバー上のファイルwww/work/myconfig.cfgをSSHのサブアプリケーションであるSFTP(Secure FTP)経由で取得し、フラッシュメモリーのルートディレクトリーにmyconfig2.cfgとして保存するには次のようにします。ここでは、ログイン時のユーザー名としてはzeinを使用しています。
awplus# copy sftp://zein@www.example.com/www/work/myconfig.cfg flash:/myconfig2.cfg Password:XXXXXX ↓ (SSHサーバーにログインするためのパスワード。実際には表示されません) Copying.. Successful operation
SFTPによるファイルダウンロードを対話式に行うには、コピー元に「sftp」、コピー先に「flash」とだけ指定します。
awplus# copy sftp flash Enter source host name []:zein@172.17.28.1 ↓ (SFTP(SSH)サーバー。通常は「ユーザー名@」を前置する) Enter source file name []:tmp/test5678.cfg ↓ (ダウンロード対象ファイル) Enter destination file name [test5678.cfg]: ↓ (ダウンロード後ファイル名。カッコ内の名前でよければ単にEnter) Password:XXXXXXXX ↓ (SSHサーバーにログインするためのパスワード。実際には表示されません) Copying.. Successful operation
ZMODEMによるファイル転送
copyコマンドでは、通信ソフトウェア(端末エミュレーター)経由でファイル転送を行うこともできます。ファイル転送プロトコルとしては、ZMODEMを使用します。
この方式では、SSHのような仮想端末接続時だけでなく、コンソールポート経由でもファイルを転送することが可能です。
カレントディレクトリーにあるファイルmyconfig2.cfgを通信ソフトウェア経由で送信するには次のようにします。
awplus# copy myconfig2.cfg zmodem **B00000000000000 (通信ソフトウェア側でZMODEMによるファイル受信の操作を行う)
通信ソフトウェア経由でファイルを受信し、カレントディレクトリーに保存するには次のようにします。保存時の名前にはZMODEMで通知されたものが使われます。
awplus# copy zmodem rz waiting to receive.**B0100000023be50 (通信ソフトウェア側でZMODEMによるファイル送信の操作を行う)