A rough utilization of Linux cat command would be to make a full disk backup or a disk partition backup or cloning of a disk partition by redirecting the command output against the partition of a hard disk, or USB stick or a local image file or write the output to a network socket.
It absolutely normal of you to think of why we should use cat over dd when the latter does the same job easily, which is quite right, however, I recently realized that cat is much faster than dd when its comes to speed and performance.
I do agree that dd provides, even more, options and also very useful in dealing with large backups such as tape drives (How to Clone Linux Partitions Using ‘dd’ Command), whereas cat includes lesser option and it’s not necessarily a worthy dd replacement but still, remains an option wherever applicable.
Suggested Read: How to Clone or Backup Linux Disk Using Clonezilla
Trust me, it gets the job done quite successfully in copying the content of a partition to a new unformatted partition. The only requirements would be to provide a valid hard disk partition with the minimum size of the existing data and with no filesystem whatsoever.
In the below example the first partition on the first hard disk, which corresponds to the /boot
partition i.e. /dev/sda1
, is cloned onto the first partition of the second disk (i.e. /dev/sdb1
) using the Linux redirection operator.
# cat /dev/sda1 > /dev/sdb1
After the command finishes, the cloned partition is mounted to /mnt
and both mount points directories are listed to check if any files are missing.
# mount /dev/sdb1 /mnt # ls /mnt # ls /boot
In order to extend the partition file system to the maximum size issue the following command with root privileges.
Suggested Read: 14 Outstanding Backup Utilities for Linux Systems
$ sudo resize2fs /dev/sdb1
The cat
command is an excellent tool to manipulate text files in Linux and some special multimedia files, but should be avoided for binary data files or concatenate shebang files. For all other options don’t hesitate to execute man cat
from console.
$ man cat
Surprisingly, there is another command called tac, yes, I am talking about tac, which is a reverse version of cat command (also spelled backwards) which display each line of a file in reverse order, want to know more about tac, read How to Use Tac Command in Linux.
I’m trying to do this as shown but I’m getting “permission denied” when running:
BTW running:
had no permission issue and it ran ok for me.
Hi,
Nice tutorial but when we cloning partition/disk must remember about change uuid after copy. If disk will stay connected to machine after reboot we can have problem with mount by uuid.
Sometimes we want to have the same uuid but you must remember to remove the disk from the server for xfs file system.
for ext file systems
For reiserfs
@Daczek,
I agree with you, we should change the uuid after creating a clone or copying disk and thanks for sharing the commands for changing the UUID in Linux. Hope it will help other users..
Morning Ravi, I see what cat does and just wondered why when making a bootable usb pen-drive the code listed on most web-sites uses dd if=whatever.iso of=/dev/sdb, I read that dd copies saved files byte by byte probably from ascii coded text, how does cat work. I am a novice user of Linux, currently taking in all knowledge to gain my ” Red-Hat CSA”. I use your website daily, very informative chunk size blocks of data. Thank you
Hi,
Thanks for nice article
Another one is writing ISO images to flash drives. Su to root and then, `cat fedora-24.iso > /dev/sdx`
Thanks Ravi Saive for this article!!. One question, can I use the cat command to clone a partition with database files? like MySQL, or it’s works only if the original partition contains only text files?.
@Rafael,
In Linux everything is file, so the cat command will work on all types of files, whether it is database file or any file type extension, you can easily clone any partition..