TAR переопределяет содержимое каталога - PullRequest
0 голосов
/ 30 мая 2020

Насколько я понимаю, команда tar переопределит содержимое файла, если файл существует. В противном случае он останется существующим.

[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

Я не понимаю, почему tar заменяет все содержимое /etc/init.d

Любые вводимые данные были бы полезны?

Спасибо!

Ответы [ 2 ]

1 голос
/ 30 мая 2020

Я полагаю, что /etc/init.d - это ссылка на /etc/rc.d/init.d.

Когда вы распаковали этот файл, он заменил ссылку на каталог. Все ваши файлы по-прежнему находятся в /etc/rc.d/init.d.

Чтобы исправить вашу ситуацию, удалите /etc/init.d, повторно свяжите его и добавьте h в команду tar:

rm -rf /etc/init.d
cd /etc
ln -s ./rc.d/init.d
cd /
tar xhf /tmp/env_pkg_1.tar
0 голосов
/ 30 мая 2020

Вы можете использовать -k или --keep-old-files, чтобы он не касался файлов, которые уже находятся в месте назначения. Судя по вашему выводу в /etc/init.d/, вы хотите сохранить network и README, а рядом с ними извлечь sshd, поэтому в вашем случае они не перекрываются.

В качестве альтернативы --keep-newer-files будет иметь tar заменяет файлы, которые из архива tar новее, чем те, что находятся в месте назначения ..

...