Тар мұрағатын алу кезінде каталог құрылымын жойыңыз

Мысалы, tar -czvf subdir.tgz subdirectory/* дегенді қолданып сервер А-да мұрағаттық мұрағат құрдым. Егер менде B серверінде параллель құрылымы бар болса, онда мен бұл трюльды көшіріп алдым және сол подкаталоға өзіме қосылғым келеді, оның ішінде, бұл ішкі мұрағатта жоқ кез-келген файлдарды жою - I /em> cd серверінің B, rm -rf subdirectory ата-ана каталогына, содан кейін tar -xzvf subdir.tgz .

Бірінші rm іске қоспай, мұны істеу жолы бар ма?

Сынақ ретінде B серверінің ішінде subdirectory/dummy/ ішіндегі күлгін каталогты орналастырдым, содан кейін tar -xzvf subdir.tgz --recursive-unlink code> subdirectory/dummy/ әлі де болды. Менің ойымша, - рекурсивті-ажырату дегеннің не екенін дұрыс түсіндім.

EDIT ========== мұнда мысал келтірілген. Мен екі түрлі серверлерді («a» және «b» сервері ретінде қарастырайық) екі «айналы» директорияларды ұсынатын екі каталог жасаймын. Мақсатты каталогта ('b') қосымша мұрағатты және мұрағаттық мұрағатта болмайтын кейбір файлдарды жасаймын. Мен бұлар мені алып тастап, жойылған деп күтемін. Шындығында барлығы мен «b» каталогында қалаймын, мен «а» каталогынан алынған файлдар. Бірақ, мысалдан көріп отырғанымыздай, - unlink-first қарамастан және - recursive-unlink дегенге қарамастан, артық каталог және файлдар әлі де бар.

-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
3

1 жауаптар

--recursive-unlink removes files and directories only, if it keeps you from extracting the new files. For your purpose, add --unlink-first. With both options, the files and directories not in the new tar will be removed before.

Бұл мен үшін жұмыс істейді:

[email protected]:~/tmp/tar $ tar cvf a.tar a
a/
a/test.txt
a/b/
a/c/
a/a/
[email protected]:~/tmp/tar $ cd b
[email protected]:~/tmp/tar/b $ tar xvf ../a.tar
a/
a/test.txt
a/b/
a/c/
a/a/
[email protected]:~/tmp/tar/b $ cd ../a
[email protected]:~/tmp/tar/a $ rmdir b
[email protected]:~/tmp/tar/a $ rm test.txt
rm: reguläre leere Datei »test.txt« entfernen? y
[email protected]:~/tmp/tar/a $ cd ..
[email protected]:~/tmp/tar $ tar cvf a.tar a
a/
a/c/
a/a/
[email protected]:~/tmp/tar $ cd b
[email protected]:~/tmp/tar/b $ tar xvf ../a.tar --unlink-first --recursive-unlink
a/
a/c/
a/a/
[email protected]:~/tmp/tar/b $ ls -lR
.:
insgesamt 8
drwxr-xr-x 4 ott ott 4096 31. Okt 19:21 a

./a:
insgesamt 16
drwxr-xr-x 2 ott ott 4096 28. Okt 21:31 a
drwxr-xr-x 2 ott ott 4096 28. Okt 21:31 c

./a/a:
insgesamt 0

./a/c:
insgesamt 0
[email protected]:~/tmp/tar/b $ tar --version
tar (GNU tar) 1.20

Мүмкін сізде әртүрлі тар бар ма?

1
қосылды
Мен тестілеу/қосалқы каталогты құрдым, сондай-ақ басты подтексте test1.txt файлын қолдана бастадым, содан кейін --recursive-unlink, сондай-ақ --linklink және test/directory екеуін де қолданды және test1.txt файлы толығымен болды каталог құрылымы. Сондықтан бұл жауап дұрыс емес деп ойлаймын.
қосылды автор Tom Auger, көзі
Мен TAR (1) пайдаланамын.
қосылды автор Tom Auger, көзі
Менің нәтижелерім басқаша көрінеді. tar -xzvf ../b/tar.tgz --unlink-first --recursive-unlink ./ тарда жоқ каталогтар мен файлдарды жоймады. Мәліметтер алу үшін менің өңделген хабарламаны қараңыз.
қосылды автор Tom Auger, көзі
@TomAuger: Мен жауапты жаңарттым.
қосылды автор ott--, көзі
Тар версияңыз қандай? ОС нұсқасы қандай? Мысал KNOPPIX (Debian негізіндегі) болып табылады.
қосылды автор ott--, көзі