tar: compare/verify in conjunction with transform
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
add a comment |
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
add a comment |
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
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
tar
edited Jan 4 at 16:47
Rui F Ribeiro
39.5k1479132
39.5k1479132
asked Jan 4 at 14:11
MWTKMWTK
11
11
add a comment |
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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