Предположим, я создал архив tar на сервере A, используя tar -czvf subdir.tgz subdirectory/*
.Если у меня есть параллельная структура на сервере B, на которую я скопировал этот tar-архив, и я хочу теперь перезаписать этот же подкаталог - включая удаление любых файлов в этом подкаталоге, которых нет в архиве tar - я могу cd
в родительский каталог на сервере B, rm -rf subdirectory
, а затем tar -xzvf subdir.tgz
.
Есть ли способ сделать это без необходимости сначала запускать rm
?
В качестве теста я поместил фиктивный каталог на сервере B на subdirectory/dummy/
, а затем запустил tar -xzvf subdir.tgz --recursive-unlink
но, к моему удивлению, subdirectory/dummy/
все еще был там.Наверное, я неправильно понял, что делает --recursive-unlink
.
РЕДАКТИРОВАТЬ ========== Вот пример.Я создаю две директории, которые будут представлять две «зеркальные» директории на двух разных серверах (представьте их как сервер «а» и сервер «б»).В каталоге назначения ('b') я создаю дополнительный каталог и некоторые файлы, которые не будут присутствовать в архиве tar.Я ожидаю, что они будут забиты и удалены.По сути, все, что я хочу в каталоге 'b', когда я закончу, это файлы из каталога 'a'.Но, как видно из примера, несмотря на --unlink-first
и --recursive-unlink
, лишние каталог и файлы все еще там после untar.
-bash-3.2$ mkdir tartest
-bash-3.2$ cd tartest
-bash-3.2$ mkdir a
-bash-3.2$ mkdir b
-bash-3.2$ cd a
-bash-3.2$ mkdir xyz
-bash-3.2$ cd xyz
-bash-3.2$ touch test.1
-bash-3.2$ touch test.2
-bash-3.2$ cd ../
-bash-3.2$ touch test.3
-bash-3.2$ cd ../b
-bash-3.2$ mkdir abc
-bash-3.2$ cd abc
-bash-3.2$ touch test.4
-bash-3.2$ cd ../../a
-bash-3.2$ tar cvf ../archive.tar ./*
./test.3
./xyz/
./xyz/test.2
./xyz/test.1
-bash-3.2$ cd ../b
-bash-3.2$ tar -xf ../archive.tar --unlink-first --recursive-unlink
-bash-3.2$ ls
total 16K
drwxr-xr-x 4 iponly168797 iponly168797 4.0K Jan 27 13:58 .
drwxr-xr-x 4 iponly168797 iponly168797 4.0K Jan 27 13:57 ..
drwxr-xr-x 2 iponly168797 iponly168797 4.0K Jan 27 13:56 abc
-rw-r--r-- 1 iponly168797 iponly168797 0 Jan 27 13:56 test.3
drwxr-xr-x 2 iponly168797 iponly168797 4.0K Jan 27 13:56 xyz
-bash-3.2$ ls xyz
total 8.0K
drwxr-xr-x 2 iponly168797 iponly168797 4.0K Jan 27 13:56 .
drwxr-xr-x 4 iponly168797 iponly168797 4.0K Jan 27 13:58 ..
-rw-r--r-- 1 iponly168797 iponly168797 0 Jan 27 13:56 test.1
-rw-r--r-- 1 iponly168797 iponly168797 0 Jan 27 13:56 test.2