Monday, April 23, 2012

Linux / Unix: Tarball Delete ( remove ) File

How do I delete OR remove a single file from within a tar ball under Unix / Linux like operating systems?

You can use the following syntax to delete a file from a tar ball:
 
tar --delete -f example.tar filename
 

Example: Delete a File From a Tar Ball

First, create a tar ball for testing purpose using the tar command, enter:
# cd /tmp
# tar -cvf foo.tar /etc

To display a list of files, enter:
# tar -tvf foo.tar
OR
# tar -tvf foo.tar | grep 'etc/resolv.conf'
Sample outputs:
-rw-r--r-- root/root        30 2011-09-20 17:51 etc/resolv.conf.tmp
-rw-r--r-- root/root 185 2011-07-27 20:35 etc/resolv.conf
-rw-r--r-- root/root 185 2011-07-27 20:35 etc/resolv.conf.pppd-backup.ppp0
-rw-r--r-- root/root 51 2011-07-12 03:14 etc/resolv.conf~
To delete a file called 'etc/resolv.conf' from a tar ball called foo.tar, enter:
# tar --delete -f foo.tar etc/resolv.conf
Verify that file has been deleted from the tar ball:
# tar -tvf foo.tar | grep 'etc/resolv.conf'
Sample outputs:
-rw-r--r-- root/root        30 2011-09-20 17:51 etc/resolv.conf.tmp
-rw-r--r-- root/root 185 2011-07-27 20:35 etc/resolv.conf.pppd-backup.ppp0
-rw-r--r-- root/root 51 2011-07-12 03:14 etc/resolv.conf~
To delete all etc/resolv.conf files, use the --wildcards opitons. It will enable pattern matching:
# tar --wildcards --delete -f foo.tar 'etc/resolv.conf*'
Use the following command to verify that files deleted from the tar ball:
# tar -tvf foo.tar | grep 'etc/resolv.conf'
Please note that you are not allowed to modify or delete files from compressed archives such as tar.gz or tar.bz2.

No comments:

Post a Comment