From owner-freebsd-questions@freebsd.org Thu Apr 19 02:21:20 2018 Return-Path: Delivered-To: freebsd-questions@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A6CD5F9A5D6 for ; Thu, 19 Apr 2018 02:21:20 +0000 (UTC) (envelope-from freebsd@dreamchaser.org) Received: from nightmare.dreamchaser.org (ns.dreamchaser.org [66.109.141.57]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "dreamchaser.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 0E66C81CB1 for ; Thu, 19 Apr 2018 02:21:19 +0000 (UTC) (envelope-from freebsd@dreamchaser.org) Received: from breakaway.dreamchaser.org (breakaway [192.168.151.122]) by nightmare.dreamchaser.org (8.15.2/8.15.2) with ESMTP id w3J2LAC8036937; Wed, 18 Apr 2018 20:21:11 -0600 (MDT) (envelope-from freebsd@dreamchaser.org) Reply-To: freebsd@dreamchaser.org Subject: Re: tar xf foo -- how to restore symlink? To: Polytropon Cc: FreeBSD Mailing List References: <5ff313cf-6148-be90-0195-7d21f1f836ac@dreamchaser.org> <20180418063005.056e321d.freebsd@edvax.de> From: Gary Aitken Message-ID: <9902b54d-4684-6ba6-a08b-f3d9504c1273@dreamchaser.org> Date: Wed, 18 Apr 2018 20:20:30 -0600 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <20180418063005.056e321d.freebsd@edvax.de> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (nightmare.dreamchaser.org [192.168.151.101]); Wed, 18 Apr 2018 20:21:12 -0600 (MDT) X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Apr 2018 02:21:20 -0000 On 04/17/18 22:30, Polytropon wrote: > On Tue, 17 Apr 2018 22:20:23 -0600, Gary Aitken wrote: >> I've got a tarball with an archived symlink and its contents. The >> symlink points to another directory in the tarball, and the tarball >> contains copies of the files in the symlinked directory. >> >> A normal extract fails with the message: $ tar -xf >> nufraw-0.41.tar.gz nufraw-0.41/doc-pak: Can't replace existing >> directory with non-directory >> >> What's the right way to deal with this? >> >> How do I get tar to restore the symlink as a symlink? -k and >> --exclude allow tar to continue unpacking, but don't restore the >> symlink as such. >> >> "man tar" doesn't seem to have what I want but I'm probably blind. > > Have you checked if -P or -U result in the intended behaviour? no, they didn't seem appropriate > -P, --absolute-paths Preserve pathnames. By default, absolute > pathnames (those that begin with a / character) have the leading > slash removed both when creating archives and extracting from them. > Also, tar will refuse to extract archive entries whose pathnames > contain .. or whose target directory would be altered by a symlink. > This option suppresses these behaviors. The archive is relative, not absolute > -U, --unlink, --unlink-first (x mode only) Unlink files before > creating them. This can be a minor performance optimization if most > files already exist, but can make things slower if most files do not > already exist. This flag also causes tar to remove intervening > directory symlinks instead of reporting an error. See the SECURITY > section below for more details. Creates duplicate directories, rather than a symlink. > Check "man tar" for "symlink". :-) Did that, didn't find anything useful. But then I don't always read so well, much less comprehend... That's why I asked :-) Gary