Yes, it is extremely what do I want - to overwrite file only if it's
content or it's type is changed.
I have opened new task at savannah -
https://savannah.gnu.org/support/index.php?109180
Thank you for your response again.

2016-11-08 14:00 GMT+03:00 Pavel Raiskup <[email protected]>:

> On Tuesday, November 8, 2016 1:19:36 PM CET [email protected] wrote:
> > Hello, Pavel! Thank you very much for your answer. But this is not
> exactly what do I want.
> > I want to extract one archive with backup of some files to existing
> directry with necessary files. If archive does not contain a file, but I
> have it inside existing directory, I dont want it to be removed while
> unpacking archive. But if archive contains new file (here I mean that
> everything is files - diretory, symbolic link, anything) - I want tar to
> overwrite it.
> > For example:
> > ➜  ~ mkdir -p mydir/dir-with-files
> > ➜  ~ ln -s /dev/null mydir/link-will-be-dir
> > ➜  ~ touch mydir/dir-with-files/file1
> > ➜  ~ tar -cf mybackup.tar mydir/
> > ➜  ~ rm -f mydir/link-will-be-dir
> > ➜ ~  mkdir -p mydir/link-will-be-dir
> > ➜  ~ touch mydir/dir-with-files/file2 mydir/link-will-be-dir/file-
> should-be-deleted-after-extract-since-its-parent-dir-become-symlink
> > ➜  ~ tar -x --some-awesome-flag mybackup.tar
> > and now i want it to have:
> > mydir/dir-with/files contains file1 and file2
> > mydir/dir-will-be-link is symbolic link to /dev/null
>
> Looks like you want something like the '--recursive-unlink' option, but
> that
> option would overwrite the non-empty directory only if (based on archive
> contents) it is to be overwritten by non-directory file.  That's not
> implemented, but I'm not sure I follow.
>
> Pavel
>
>
>
> > 01.11.2016, 11:04, "Pavel Raiskup" <[email protected]>:
> > On Tuesday, November 1, 2016 2:56:23 AM CET [email protected] wrote:
> >
> >  Hello.
> >  I don't know if it is a bug or something like that.
> >  What flag should I use if I want to overwrite existing non-empty
> directory by
> >  symlink from my tar archive?
> >
> > There's --recursive-unlink. But I would be careful to explicitly select
> > proper set of files to be extracted, rather then extract the whole
> archive
> > (there's high chance this will cause some disaster).
> >
> > Documentation: info tar -n "Recursive Unlink"
> >
> > Pavel
> >
> >
> >  I've tried --overwrite flag and -U, that did not
> >  work. Tried with tar version 1.29 and 1.28. Here is example:
> >
> >  ➜ ln -s /dev/null test
> >  ➜ tar -cf archive.tar test
> >  ➜ rm -f test
> >  ➜ mkdir -p test/something
> >  ➜ tar --overwrite -xf archive.tar
> >  tar: test: Cannot open: File exists
> >  tar: Exiting with failure status due to previous errors
> >  ➜ tar -U -xf archive.tar
> >  tar: test: Cannot unlink: Directory not empty
> >  tar: Exiting with failure status due to previous errors
> >  ➜ rmdir test/something
> >  ➜ tar --overwrite -xf archive.tar
> >  ➜ echo $?
> >  0
> >
> >
> >
>
>
>
>

Reply via email to