Lesson Contents
Cisco IOS has a filesystem, just like your own computer. For large files, like the Cisco IOS operating system, it uses flash memory. The advantage of flash memory is that it’s less prone to failure than hard disks. The startup configuration is stored on NVRAM. It also uses some special prefixes to give the filesystem access to internal functions or external servers.
In this lesson, we’ll take a look how we can work with the filesystem and do things like copying files or creating folders.
Configuration
In my example, I will use a Cisco 2811 router. Depending on your router or switch, your output might differ.
Filesystems
Let’s take a look at the Cisco IOS filesystem:
R1#show file systems
File Systems:
Size(b) Free(b) Type Flags Prefixes
- - opaque rw archive:
- - opaque rw system:
- - opaque rw tmpsys:
- - opaque rw null:
- - network rw tftp:
* 3999793152 3794403328 disk rw flash:#
245752 240580 nvram rw nvram:
- - opaque wo syslog:
- - opaque rw xmodem:
- - opaque rw ymodem:
- - network rw rcp:
- - network rw pram:
- - network rw http:
- - network rw ftp:
- - network rw scp:
- - opaque ro tar:
- - network rw https:
- - opaque ro cns:
We do this with the show command. There’s a big list with items. Below the type column we see four different types:
- opaque: these are used for some internal functions. For example, if you use the show running-config command it internally links to the system:running-config file.
- network: this is used to give the filesystem access to external systems like TFTP, FTP or HTTP servers. We can use this to copy files from these external sources to our filesystem.
- disk: this is used for storage devices like our flash memory or USB sticks.
- nvram: this is the internal NVRAM where the startup-config file is saved.
The flags describe the permission for the filesystem:
- ro: read only
- rw: read and write
- wo: write only
Here is an explanation of some of the prefixes we see above:
- system: this is the system memory where the running-configuration is located.
- null: if you copy a file here, it won’t be saved anywhere. This is useful if you want to figure out what the size is of a remote file (like on a TFTP server). In labs, it can be useful to copy a remote file to generate some bandwidth.
- tftp: a remote TFTP server.
- flash: the flash memory.
- nvram: the internal NVRAM that stores the startup-configuration.
- xmodem / ymodem: these are older protocols that can be used to copy files through the console.
- rcp: used for external RCP (Remote Copy Protocol) servers.
- http: to copy files from remote HTTP web servers.
- ftp: to copy files from or to remote FTP servers.
- scp: to copy files from or to remote SCP servers.
- tar: to create TAR files, I will show this in this lesson.
- https: to copy from remote HTTPS web servers.
Let’s take a closer look at the flash memory…
Display folders and files
Most files are stored on the flash memory. We can see the default folder that we are in with the pwd command:
R1#pwd
flash:
As you can see, this is the flash folder. Let’s take a look at its contents with the dir command:
R1#dir
Directory of flash:/
1 -rw- 1119 Sep 29 2015 11:11:52 +00:00 first-test-config.cfg
2 -rw- 1184 Dec 3 2014 15:14:06 +00:00 R1-R2-ASA1-ASA2.cfg
3 -rw- 1125 Dec 23 2014 13:41:32 +00:00 ASA1-first-test-config.cfg
6 -rw- 1060 Aug 11 2015 12:53:50 +00:00 mpls-pe-ce-basic-addressing.cfg
7 -rw- 1213 Sep 30 2015 15:05:02 +00:00 router-on-a-stick.cfg
8 -rw- 67926080 Apr 2 2015 14:21:46 +00:00 c2800nm-adventerprisek9-mz.151-4.M10.bin
9 -rw- 1199 Aug 27 2015 14:38:20 +00:00 mpls-vpn-pe-ce-rip.cfg
10 -rw- 1235 Aug 27 2015 09:18:06 +00:00 mpls-vpn-pe-ce-bgp.cfg
11 -rw- 1184 Sep 1 2015 12:10:44 +00:00 mpls-vpn-pe-ce-eigrp.cfg
12 -rw- 1060 Sep 1 2015 16:00:28 +00:00 mpls-vpn-pe-ce.cfg
13 -rw- 1205 Sep 2 2015 12:05:30 +00:00 mpls-vpn-pe-ce-ospf.cfg
14 -rw- 1051 Sep 3 2015 10:56:26 +00:00 ipv6-nat64-v6v4.cfg
15 -rw- 1185 Sep 28 2015 19:44:52 +00:00 asa1-asa2-active-standby-failover.cfg
16 -rw- 1675 Oct 2 2015 15:13:18 +00:00 bgp-extended-acl-filtering.cfg
17 -rw- 1346 Oct 18 2015 12:18:02 +00:00 second-test-config.cfg
18 -rw- 1115 Dec 8 2015 21:32:14 +00:00 multicast-pim-dense-r1-to-r5.cfg
19 -rw- 1115 Dec 8 2015 21:37:08 +00:00 multicast-pim-sparse-r1-to-r5.cfg
20 -rw- 1048 Jan 18 2016 10:36:24 +00:00 frame-relay-hub-spoke.cfg
21 -rw- 1041 Jun 4 2016 14:10:58 +00:00 router-backup-Jun--4-14-10-59.035-0
22 -rw- 1100 Jun 4 2016 14:11:26 +00:00 router-backup-Jun--4-14-11-27.743-1
23 -rw- 1156 Jun 4 2016 14:12:04 +00:00 router-backup-Jun--4-14-12-04.619-2
24 -rw- 1156 Jun 4 2016 14:12:38 +00:00 router-backup-Jun--4-14-12-39.179-3
25 -rw- 67929600 Nov 4 2016 12:11:22 +00:00 c2800nm-adventerprisek9-mz.151-4.M12a.bin
3999793152 bytes total (3794337792 bytes free)
Above you can see there is a bunch of stuff on my flash drive. There are some cfg (config) files and two IOS images, you can recognize those because of their size and they end with .bin.
Creating folders
Let’s see if we can create a new folder on our flash drive. I will create a folder called configs with the mkdir command:
R1#mkdir configs
Create directory filename [configs]?
Created dir flash:configs
Let’s see if it’s there:
R1#dir
Directory of flash:/
1 -rw- 1119 Sep 29 2015 11:11:52 +00:00 first-test-config.cfg
26 drw- 0 Jan 31 2017 10:31:58 +00:00 configs
2 -rw- 1184 Dec 3 2014 15:14:06 +00:00 R1-R2-ASA1-ASA2.cfg
[output omitted]
Above we can see our new configs folder. With the cd command, you can enter it:
R1#cd configs
Right now it’s empty:
R1#dir
Directory of flash:/configs/
No files in directory
3999793152 bytes total (3794337792 bytes free)
If you want to exit this folder, use the cd .. command:
R1#cd ..
Our current folder is now the root of the flash again:
R1#pwd
flash:/
Copy files and folders
Let’s see if we can copy some files into our new folder. We do this with the copy command:
R1#copy ?
/erase Erase destination file system.
/error Allow to copy error file.
/noverify Don't verify image signature before reload.
/verify Verify image signature before reload.
archive: Copy from archive: file system
cns: Copy from cns: file system
flash: Copy from flash: file system
ftp: Copy from ftp: file system
http: Copy from http: file system
https: Copy from https: file system
null: Copy from null: file system
nvram: Copy from nvram: file system
pram: Copy from pram: file system
rcp: Copy from rcp: file system
running-config Copy from current system configuration
scp: Copy from scp: file system
startup-config Copy from startup configuration
system: Copy from system: file system
tar: Copy from tar: file system
tftp: Copy from tftp: file system
tmpsys: Copy from tmpsys: file system
xmodem: Copy from xmodem: file system
ymodem: Copy from ymodem: file system
Above you can see there are a lot of options. The copy command can be used to copy files locally but also between external systems like a FTP server, HTTP server, and more. For now, let’s see if we can copy a file in the root of our flash drive to our new configs folder:
R1#copy flash:second-test-config.cfg flash:configs
Destination filename [/configs/second-test-config.cfg]?
Copy in progress...C
1346 bytes copied in 0.492 secs (2736 bytes/sec)
The command above copies the second-test-config.cfg file in the root of the flash to the configs folder on the flash drive. Cisco IOS asks for the destination file name (which I already supplied) so you only have to hit enter for these questions.
Let’s take a look at the contents of the configs folder:
R1#dir flash:configs
Directory of flash:/configs/
27 -rw- 1346 Jan 31 2017 10:34:00 +00:00 second-test-config.cfg
3999793152 bytes total (3794272256 bytes free)
As you can see, the file is there.
Delete files and folders
You also might want to delete some of your files and/or folders. We can do this with the delete command:
R1#delete flash:configs/second-test-config.cfg
Delete filename [/configs/second-test-config.cfg]?
Delete flash:/configs/second-test-config.cfg? [confirm]
Just hit enter for the two questions that Cisco IOS prompts. Let’s see if it’s gone:
R1#dir flash:configs
Directory of flash:/configs/
No files in directory
3999793152 bytes total (3794337792 bytes free)
Our file is gone. We can also remove a folder with the rmdir command:
R1#rmdir configs
Remove directory filename [configs]?
Delete flash:/configs? [confirm]
Removed dir flash:/configs
Our folder is now gone.
Tar files
Cisco IOS supports tar files. A tar file bundles multiple files, it’s similar to a ZIP or RAR file without the compression. To demonstrate this, I will create a new folder called “backup” and will copy some files to it:
R1#mkdir backup
Create directory filename [backup]?
Created dir flash:/backup
R1#copy flash:first-test-config.cfg flash:backup
Destination filename [/backup/first-test-config.cfg]?
Copy in progress...C
1119 bytes copied in 0.504 secs (2220 bytes/sec)
R1#copy flash:second-test-config.cfg flash:backup
Destination filename [/backup/second-test-config.cfg]?
Copy in progress...C
1346 bytes copied in 0.408 secs (3299 bytes/sec)
Let’s take a look at the contents of the backup folder:
R1#dir flash:backup
Directory of flash:/backup/
28 -rw- 1119 Jan 31 2017 10:45:20 +00:00 first-test-config.cfg
29 -rw- 1346 Jan 31 2017 10:45:26 +00:00 second-test-config.cfg
3999793152 bytes total (3794206720 bytes free)
Let’s create an archive of these two files with the archive tar command. I will store the tar file in the root of the flash drive:
R1#archive tar /create flash:backup-configs.tar flash:/backup
archiving first-test-config.cfg (1119 bytes)
archiving second-test-config.cfg (1346 bytes)
That’s all there is to it. If you want to see what files are in the TAR file, you can do it like this:
R1#archive tar /table flash:backup-configs.tar
first-test-config.cfg (1119 bytes)
second-test-config.cfg (1346 bytes)
What if we want to extract a TAR file? Let’s create a new folder for this:
R1#mkdir new-configs
Create directory filename [new-configs]?
Created dir flash:/new-configs
Here’s how to extract the tar file to the new folder:
R1#archive tar /xtract flash:backup-configs.tar flash:/new-configs
extracting first-test-config.cfg (1119 bytes)
extracting second-test-config.cfg (1346 bytes)
Let’s verify our work:
R1#dir flash:new-configs
Directory of flash:/new-configs/
32 -rw- 1119 Jan 31 2017 10:48:00 +00:00 first-test-config.cfg
33 -rw- 1346 Jan 31 2017 10:48:00 +00:00 second-test-config.cfg
3999793152 bytes total (3793944576 bytes free)
Above we find our extracted files.
Display file contents
What if you want to look at the contents of a text file like a configuration? This is possible on Cisco IOS with the more command:
R1#more flash:/first-test-config.cfg
!
! Last configuration change at 11:11:41 UTC Tue Sep 29 2015
version 15.1
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1
!
boot-start-marker
boot-end-marker
!
[output omitteded]
The router will print the file contents on the console.
Conclusion
You have now seen how to move around the Cisco IOS filesystem, how to create folders, copy files and create/extract TAR files. If you want to know how to copy files between your local router / switch and an external server like a TFTP server, take a look at the following lesson: How to upgrade the Cisco IOS image.
Hi All,
What is/are the file system type(s) used by Cisco IOS (for example the flash: file system)? Similar to Linux file system types - ext2, ext3, etc.
Thanks
Rohan
Hello Rohan
In most cases, the file system used is fat32. This can be seen from the fact that most cisco IOS platforms have the
fsck
utility which is a FAT filesystem check. Also, most USB flash drives that are used as external storage ports on cisco devices are recommended to be formated as fat32.Some cisco platforms have the ability to change file systems as well. Depending on the platform, using the IOS command
filesystem
filesystem-type you are able to format any file system (flash, nvram or usb flash drive) on a Cisco device to fat16, fat32 or qnx4.I hope this has been helpful!
Laz
Great!
Thanks Lagapides.
Why your configuration file is showing in flash , should not it show u in the NVRAM ??
R1#dir
Directory of flash:/
Hello Narad
It is true that the startup-config is saved within NVRAM. When a Cisco device boots up, it will look in the NVRAM and it will search for the file named
startup-config
and it will load it into RAM as therunning-config
. However, it is possible, and it is common practice, to have several configurations saved within a device. These are not active but are saved as files of different names. These files can be saved in NVRAM or flash. They are simply being stored.They can easily be enabled by simply copying them to NVRAM and renaming them to
... Continue reading in our forumstartup