Monday, October 10, 2022

[SOLVED] TAR override the contents of the directory

Issue

My understanding of tar command that it will override the content of the file if file exist. Otherwise it would keep as existing.

[root@something~]# ls -al /etc/init.d/
total XX
drwxr-xr-x.  2 root root    83 Jun 14  2018 .
drwxr-xr-x. 10 root root   127 Jun  6  2017 ..
-rwxr-xr-x.  1 root root  7293 Jan  2  2018 network
-rw-r--r--.  1 root root  1160 Feb 20  2018 README
[root@something~]# tar tvf /tmp/env_pkg_1.tar 
drwxr-xr-x staff    0 2020-05-29 19:42 etc/
drwxr-xr-x user/staff    0 2020-05-29 18:04 etc/init.d/
-rw-r--r-- user/staff 3383 2020-05-29 18:04 etc/init.d/sshd
[root@something~]# cd /
[root@something /]# tar xf /tmp/env_pkg_1.tar 
[root@something/]# ls -al /etc/init.d/
total 16
drwxr-xr-x   2 XXXXXX XXXXXX 18 May 29 18:04 .
drwxr-xr-x. 85 XXXXXX XXXXXX 8192 May 29 19:42 ..
-rw-r--r--   1 XXXXXX XXXXXX 3383 May 29 18:04 sshd

I am not understand why tar is replacing the entire contents of /etc/init.d

Any inputs would be helpful ?


Solution

I belive that /etc/init.d is a link to /etc/rc.d/init.d.

When you untarred that file, it overwrote the link with a directory. All of your files are still in /etc/rc.d/init.d.

To fix your situation, remove /etc/init.d, relink it, and add a h to the tar command:

rm -rf /etc/init.d
cd /etc
ln -s ./rc.d/init.d
cd /
tar xhf /tmp/env_pkg_1.tar


Answered By - Jack
Answer Checked By - Candace Johnson (WPSolving Volunteer)