tar: compare/verify in conjunction with transform












0















Is there an efficient way to verify a written tar-archive with transformed file names?



Assume I have a file called foo and want to store it in the archive as bar, I would create the archive foobar.tar like so:



$ tar -cf foobar.tar --transform="flags=r;s|foo|bar|" foo
$ tar --list -f foobar.tar
bar


Now if I add the --verify option, this will result in an error:



$ tar --verify -cf foobar.tar --transform="flags=r;s|foo|bar|" foo
tar: Archive contains transformed file names.
tar: Verification may fail to locate original files.
tar: bar: Warning: Cannot stat: No such file or directory


I have unsuccessfully tried to fall-back on the --compare flag on the already created (and transformed) archive like-so,



$ tar --compare -f foobar.tar --transform="flags=r;s|foo|bar|" foo 
tar: foo: Not found in archive
tar: Exiting with failure status due to previous errors


but the --transform flag seems to be ignored. Another idea I had was to create the archive with original file names first, verify it during that step and then apply the transformation afterwards. However, I could not find any flag which tells tar to do in-situ transformations of file names. Here's an example using -u, which did not work (since -u only updates/appends given files).



$ tar --verify -f foobar.tar foo 
$ tar --transform="flags=r;s|foo|bar|" -uf foobar.tar
$ tar --list -f foobar.tar
foo


I wish to write a program to manipulate the tar-headers manually or to implement my own verification routine. Anyhow, I would prefer sticking with standard UNIX tools. Furthermore, since I am working with very large archives, I want to avoid expensive operations such as generating temporary files.










share|improve this question





























    0















    Is there an efficient way to verify a written tar-archive with transformed file names?



    Assume I have a file called foo and want to store it in the archive as bar, I would create the archive foobar.tar like so:



    $ tar -cf foobar.tar --transform="flags=r;s|foo|bar|" foo
    $ tar --list -f foobar.tar
    bar


    Now if I add the --verify option, this will result in an error:



    $ tar --verify -cf foobar.tar --transform="flags=r;s|foo|bar|" foo
    tar: Archive contains transformed file names.
    tar: Verification may fail to locate original files.
    tar: bar: Warning: Cannot stat: No such file or directory


    I have unsuccessfully tried to fall-back on the --compare flag on the already created (and transformed) archive like-so,



    $ tar --compare -f foobar.tar --transform="flags=r;s|foo|bar|" foo 
    tar: foo: Not found in archive
    tar: Exiting with failure status due to previous errors


    but the --transform flag seems to be ignored. Another idea I had was to create the archive with original file names first, verify it during that step and then apply the transformation afterwards. However, I could not find any flag which tells tar to do in-situ transformations of file names. Here's an example using -u, which did not work (since -u only updates/appends given files).



    $ tar --verify -f foobar.tar foo 
    $ tar --transform="flags=r;s|foo|bar|" -uf foobar.tar
    $ tar --list -f foobar.tar
    foo


    I wish to write a program to manipulate the tar-headers manually or to implement my own verification routine. Anyhow, I would prefer sticking with standard UNIX tools. Furthermore, since I am working with very large archives, I want to avoid expensive operations such as generating temporary files.










    share|improve this question



























      0












      0








      0








      Is there an efficient way to verify a written tar-archive with transformed file names?



      Assume I have a file called foo and want to store it in the archive as bar, I would create the archive foobar.tar like so:



      $ tar -cf foobar.tar --transform="flags=r;s|foo|bar|" foo
      $ tar --list -f foobar.tar
      bar


      Now if I add the --verify option, this will result in an error:



      $ tar --verify -cf foobar.tar --transform="flags=r;s|foo|bar|" foo
      tar: Archive contains transformed file names.
      tar: Verification may fail to locate original files.
      tar: bar: Warning: Cannot stat: No such file or directory


      I have unsuccessfully tried to fall-back on the --compare flag on the already created (and transformed) archive like-so,



      $ tar --compare -f foobar.tar --transform="flags=r;s|foo|bar|" foo 
      tar: foo: Not found in archive
      tar: Exiting with failure status due to previous errors


      but the --transform flag seems to be ignored. Another idea I had was to create the archive with original file names first, verify it during that step and then apply the transformation afterwards. However, I could not find any flag which tells tar to do in-situ transformations of file names. Here's an example using -u, which did not work (since -u only updates/appends given files).



      $ tar --verify -f foobar.tar foo 
      $ tar --transform="flags=r;s|foo|bar|" -uf foobar.tar
      $ tar --list -f foobar.tar
      foo


      I wish to write a program to manipulate the tar-headers manually or to implement my own verification routine. Anyhow, I would prefer sticking with standard UNIX tools. Furthermore, since I am working with very large archives, I want to avoid expensive operations such as generating temporary files.










      share|improve this question
















      Is there an efficient way to verify a written tar-archive with transformed file names?



      Assume I have a file called foo and want to store it in the archive as bar, I would create the archive foobar.tar like so:



      $ tar -cf foobar.tar --transform="flags=r;s|foo|bar|" foo
      $ tar --list -f foobar.tar
      bar


      Now if I add the --verify option, this will result in an error:



      $ tar --verify -cf foobar.tar --transform="flags=r;s|foo|bar|" foo
      tar: Archive contains transformed file names.
      tar: Verification may fail to locate original files.
      tar: bar: Warning: Cannot stat: No such file or directory


      I have unsuccessfully tried to fall-back on the --compare flag on the already created (and transformed) archive like-so,



      $ tar --compare -f foobar.tar --transform="flags=r;s|foo|bar|" foo 
      tar: foo: Not found in archive
      tar: Exiting with failure status due to previous errors


      but the --transform flag seems to be ignored. Another idea I had was to create the archive with original file names first, verify it during that step and then apply the transformation afterwards. However, I could not find any flag which tells tar to do in-situ transformations of file names. Here's an example using -u, which did not work (since -u only updates/appends given files).



      $ tar --verify -f foobar.tar foo 
      $ tar --transform="flags=r;s|foo|bar|" -uf foobar.tar
      $ tar --list -f foobar.tar
      foo


      I wish to write a program to manipulate the tar-headers manually or to implement my own verification routine. Anyhow, I would prefer sticking with standard UNIX tools. Furthermore, since I am working with very large archives, I want to avoid expensive operations such as generating temporary files.







      tar






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jan 4 at 16:47









      Rui F Ribeiro

      39.5k1479132




      39.5k1479132










      asked Jan 4 at 14:11









      MWTKMWTK

      11




      11






















          0






          active

          oldest

          votes











          Your Answer








          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "106"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f492486%2ftar-compare-verify-in-conjunction-with-transform%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Unix & Linux Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f492486%2ftar-compare-verify-in-conjunction-with-transform%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Morgemoulin

          Scott Moir

          Souastre