CiscoIOSでのファイル操作術

## Cisco IOSでファイルを操作する
ルータを構築していると、Configを保存したり書き戻す等、意外とファイル操作をする事があると思います。
ルーターにUSBポートがある場合、これらの作業にUSBメモリを使用する事が出来ます。
今回は、Cisco IOSでのUSBメモリの使い方をまとめました。

## この記事について
以下の記事を清書したものになります。
内容は当時(2015.03.04)のものとなります。
https://blog.mikalab.info/archives/838274.html

## USBメモリを挿入する
USBメモリを挿入すると、`usbflush0:`として認識されます。
事前にFATでフォーマットされている場合、そのままファイル操作が可能です。
mount / unmountの操作は必要ありません。
```
*Mar  4 06:16:01.243: %USBFLASH-5-CHANGE: usbflash0 has been inserted!
```

## USBメモリをフォーマットする
IOS自身で、USBメモリをフォーマットする事が可能です。
ファイルシステムはFATであり、今回はTOSHIBA製及びTRANCEND製の16GBのメモリで動作を確認しました。

```
Router#format usbflash0:
Format operation may take a while. Continue? [confirm]
Format operation will destroy all data in "usbflash0:".  Continue? [confirm]
Format: All system sectors written. OK...
 
Format: Total sectors in formatted partition: 30308481
Format: Total bytes in formatted partition: 15517942272
Format: Operation completed successfully.
 
Format of usbflash0: complete
```

## USBメモリの容量を確認する
各デバイス毎に、容量および空き容量を確認する事ができます。
```
Router#show file systems
File Systems:
       Size(b)       Free(b)      Type  Flags  Prefixes
[中略]
*     31989760       1421312      disk     rw   flash:#
        196600        192452     nvram     rw   nvram:
[中略]
   15487623168   15487619072  usbflash     rw   usbflash0:
```

## ファイルをコピーする
ここでは、`flash:`上のIOS本体を、USBメモリへコピーします。
大量の`C`が出力されますので、お茶でも飲んでお待ちください。

```
Router#copy flash:c181x-adventerprisek9-mz.151-4.M6.bin usbflash0:
Destination filename [c181x-adventerprisek9-mz.151-4.M6.bin]?
Copy in progress...CCCCCCCCCCC[中略]
30554380 bytes copied in 29.888 secs (1022296 bytes/sec)
```

## ファイルの詳細を表示する
ファイルの詳細を表示します。
ファイルタイプ及びファイルサイズを確認できます。

```
Router#show file information usbflash0:c181x-adventerprisek9-mz.151-4.M6.bin
usbflash0:c181x-adventerprisek9-mz.151-4.M6.bin:
  type is image (elf) []
  file size is 30554380 bytes, run size is 30724078 bytes
  Runnable image, entry point 0x80012000, run from ram
```

## USBメモリ内のファイルの一覧を出力する
デバイス内のファイルの一覧を出力します。
```
Router#show usbflash0:
-#- --length-- -----date/time------ path
1     30554380 Mar 4 2015 06:21:52 +00:00 c181x-adventerprisek9-mz.151-4.M6.bin
 
15457062912 bytes available (30560256 bytes used)
```

## ファイルを削除する
デバイス内のファイルを削除します。
```
Router#delete usbflash0:c181x-adventerprisek9-mz.151-4.M6.bin
Delete filename [c181x-adventerprisek9-mz.151-4.M6.bin]?
Delete usbflash0:/c181x-adventerprisek9-mz.151-4.M6.bin? [confirm]
```

## startup-configを任意の名前でUSBメモリに保存する
ここでは、`flash:`上に保存された`startup-config`を、USBメモリ上に任意の名前で保存します。
ここでは、一度configを保存（write memory）した後、USBメモリへ`default-router.config`として保存します。
```
Router#wr mem
Building configuration...
[OK]
Router#copy startup-config usbflash0:default-router.config
Destination filename [default-router.config]?
1390 bytes copied in 0.488 secs (2848 bytes/sec)
```

## Cisco Routerを初期化する
Cisco Routerを初期化します。
一般的には`startup-config`の削除のみですが、`vlan.dat`(VLAN Database)が悪さをする場合があるので、明示的に削除します。 
その他、ログ等を出力している場合も、IOS本体以外を同様に削除します。
この後、ルータをリロードする事で初期化が完了します。
```
Router#erase startup-config
Erasing the nvram filesystem will remove all configuration files! Continue? [confirm]
[OK]
Erase of nvram: complete
*Mar  4 06:28:08.023: %SYS-7-NV_BLOCK_INIT: Initialized the geometry of nvram
Router#delete flash:vlan.dat
Delete filename [vlan.dat]?
Delete flash:/vlan.dat? [confirm]
Router#show flash:
-#- --length-- -----date/time------ path
1     30554380 Feb 22 2013 01:24:02 +00:00 c181x-adventerprisek9-mz.151-4.M6.bin
 
1425408 bytes available (30564352 bytes used)
```

## startup-configを上書きする
USBメモリに保存されたConfigを`startup-config`に上書きします。
`running-config`へ上書きする事も可能ですが、ケースにより意図しない挙動をする場合があり、個人的に推奨していません。
上書き後、リロードする事で反映されます。
```
Router#copy usbflash0:default-router.config startup-config
Destination filename [startup-config]?
[OK]
1390 bytes copied in 1.396 secs (996 bytes/sec)
 
Router#reload
Proceed with reload? [confirm]
```