Shell Script - tar comand mistaking archive name for directory
My Shell Script, a gutted backup script alternates between seemingly mistaking what I intend to be the archive file for the source directory and giving an output which claims I am trying to create an empty archive which I believe means it is still trying to use the archive name as the source. This only occurs when I supply a shell variable as the archive parameter, trying regular strings works perfectly.
#!/bin/bash
DATETIME=$(date +'%y/%m/%d-%H_%M_%S')
SRC='/home/benny/test/'
DST='backups'
GIVENAME='benny-backup'
ARCHIVE="$GIVENAME-$DATETIME.tar.gz"
echo $DATETIME
echo $SRC
echo $ARCHIVE
tar -zcvf $ARCHIVE $SRC
# if tar -zcvf archive.tar.gz" $SRC; the
The following is the output from the code:
18/11/15-00_10_02
/home/benny/test/
tar: Cowardly refusing to create an empty archive
Try 'tar --help' or 'tar --usage' for more information.
This is the output I was having before I amended the above code to use only one variable created from concatenating the two initial ones:
18/11/15-00_12_51
/home/benny/test/
tar: Removing leading `/' from member names
tar (child): : Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
/home/benny/test/
/home/benny/test/price.txt
Thanks
linux bash
|
show 3 more comments
My Shell Script, a gutted backup script alternates between seemingly mistaking what I intend to be the archive file for the source directory and giving an output which claims I am trying to create an empty archive which I believe means it is still trying to use the archive name as the source. This only occurs when I supply a shell variable as the archive parameter, trying regular strings works perfectly.
#!/bin/bash
DATETIME=$(date +'%y/%m/%d-%H_%M_%S')
SRC='/home/benny/test/'
DST='backups'
GIVENAME='benny-backup'
ARCHIVE="$GIVENAME-$DATETIME.tar.gz"
echo $DATETIME
echo $SRC
echo $ARCHIVE
tar -zcvf $ARCHIVE $SRC
# if tar -zcvf archive.tar.gz" $SRC; the
The following is the output from the code:
18/11/15-00_10_02
/home/benny/test/
tar: Cowardly refusing to create an empty archive
Try 'tar --help' or 'tar --usage' for more information.
This is the output I was having before I amended the above code to use only one variable created from concatenating the two initial ones:
18/11/15-00_12_51
/home/benny/test/
tar: Removing leading `/' from member names
tar (child): : Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
/home/benny/test/
/home/benny/test/price.txt
Thanks
linux bash
##!/bin/bash
has too many#
. It should just be#!/bin/bash
– Barmar
Nov 15 '18 at 0:31
Is that in the real script or a copying error?
– Barmar
Nov 15 '18 at 0:31
Putset -x
at the beginning of the script. Then you'll see each command as it's executed.
– Barmar
Nov 15 '18 at 0:32
Don't use all-uppercase variable names. By convention those names are used for environment variables.
– Barmar
Nov 15 '18 at 0:33
Make sure your script has Unix newlines, not Windows CRLF. Usedos2unix filename
to fix it.
– Barmar
Nov 15 '18 at 0:34
|
show 3 more comments
My Shell Script, a gutted backup script alternates between seemingly mistaking what I intend to be the archive file for the source directory and giving an output which claims I am trying to create an empty archive which I believe means it is still trying to use the archive name as the source. This only occurs when I supply a shell variable as the archive parameter, trying regular strings works perfectly.
#!/bin/bash
DATETIME=$(date +'%y/%m/%d-%H_%M_%S')
SRC='/home/benny/test/'
DST='backups'
GIVENAME='benny-backup'
ARCHIVE="$GIVENAME-$DATETIME.tar.gz"
echo $DATETIME
echo $SRC
echo $ARCHIVE
tar -zcvf $ARCHIVE $SRC
# if tar -zcvf archive.tar.gz" $SRC; the
The following is the output from the code:
18/11/15-00_10_02
/home/benny/test/
tar: Cowardly refusing to create an empty archive
Try 'tar --help' or 'tar --usage' for more information.
This is the output I was having before I amended the above code to use only one variable created from concatenating the two initial ones:
18/11/15-00_12_51
/home/benny/test/
tar: Removing leading `/' from member names
tar (child): : Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
/home/benny/test/
/home/benny/test/price.txt
Thanks
linux bash
My Shell Script, a gutted backup script alternates between seemingly mistaking what I intend to be the archive file for the source directory and giving an output which claims I am trying to create an empty archive which I believe means it is still trying to use the archive name as the source. This only occurs when I supply a shell variable as the archive parameter, trying regular strings works perfectly.
#!/bin/bash
DATETIME=$(date +'%y/%m/%d-%H_%M_%S')
SRC='/home/benny/test/'
DST='backups'
GIVENAME='benny-backup'
ARCHIVE="$GIVENAME-$DATETIME.tar.gz"
echo $DATETIME
echo $SRC
echo $ARCHIVE
tar -zcvf $ARCHIVE $SRC
# if tar -zcvf archive.tar.gz" $SRC; the
The following is the output from the code:
18/11/15-00_10_02
/home/benny/test/
tar: Cowardly refusing to create an empty archive
Try 'tar --help' or 'tar --usage' for more information.
This is the output I was having before I amended the above code to use only one variable created from concatenating the two initial ones:
18/11/15-00_12_51
/home/benny/test/
tar: Removing leading `/' from member names
tar (child): : Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
/home/benny/test/
/home/benny/test/price.txt
Thanks
linux bash
linux bash
edited Nov 15 '18 at 0:38
Barmar
434k36258359
434k36258359
asked Nov 15 '18 at 0:16
nrmadnrmad
788
788
##!/bin/bash
has too many#
. It should just be#!/bin/bash
– Barmar
Nov 15 '18 at 0:31
Is that in the real script or a copying error?
– Barmar
Nov 15 '18 at 0:31
Putset -x
at the beginning of the script. Then you'll see each command as it's executed.
– Barmar
Nov 15 '18 at 0:32
Don't use all-uppercase variable names. By convention those names are used for environment variables.
– Barmar
Nov 15 '18 at 0:33
Make sure your script has Unix newlines, not Windows CRLF. Usedos2unix filename
to fix it.
– Barmar
Nov 15 '18 at 0:34
|
show 3 more comments
##!/bin/bash
has too many#
. It should just be#!/bin/bash
– Barmar
Nov 15 '18 at 0:31
Is that in the real script or a copying error?
– Barmar
Nov 15 '18 at 0:31
Putset -x
at the beginning of the script. Then you'll see each command as it's executed.
– Barmar
Nov 15 '18 at 0:32
Don't use all-uppercase variable names. By convention those names are used for environment variables.
– Barmar
Nov 15 '18 at 0:33
Make sure your script has Unix newlines, not Windows CRLF. Usedos2unix filename
to fix it.
– Barmar
Nov 15 '18 at 0:34
##!/bin/bash
has too many #
. It should just be #!/bin/bash
– Barmar
Nov 15 '18 at 0:31
##!/bin/bash
has too many #
. It should just be #!/bin/bash
– Barmar
Nov 15 '18 at 0:31
Is that in the real script or a copying error?
– Barmar
Nov 15 '18 at 0:31
Is that in the real script or a copying error?
– Barmar
Nov 15 '18 at 0:31
Put
set -x
at the beginning of the script. Then you'll see each command as it's executed.– Barmar
Nov 15 '18 at 0:32
Put
set -x
at the beginning of the script. Then you'll see each command as it's executed.– Barmar
Nov 15 '18 at 0:32
Don't use all-uppercase variable names. By convention those names are used for environment variables.
– Barmar
Nov 15 '18 at 0:33
Don't use all-uppercase variable names. By convention those names are used for environment variables.
– Barmar
Nov 15 '18 at 0:33
Make sure your script has Unix newlines, not Windows CRLF. Use
dos2unix filename
to fix it.– Barmar
Nov 15 '18 at 0:34
Make sure your script has Unix newlines, not Windows CRLF. Use
dos2unix filename
to fix it.– Barmar
Nov 15 '18 at 0:34
|
show 3 more comments
1 Answer
1
active
oldest
votes
Filenames can't have /
in them, since those are directory separators. Change the format of your date to use different delimiters.
DATETIME=$(date +'%y-%m-%d-%H_%M_%S')
Thanks a lot, this has been annoying me all evening
– nrmad
Nov 15 '18 at 0:44
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
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: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
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%2fstackoverflow.com%2fquestions%2f53310694%2fshell-script-tar-comand-mistaking-archive-name-for-directory%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Filenames can't have /
in them, since those are directory separators. Change the format of your date to use different delimiters.
DATETIME=$(date +'%y-%m-%d-%H_%M_%S')
Thanks a lot, this has been annoying me all evening
– nrmad
Nov 15 '18 at 0:44
add a comment |
Filenames can't have /
in them, since those are directory separators. Change the format of your date to use different delimiters.
DATETIME=$(date +'%y-%m-%d-%H_%M_%S')
Thanks a lot, this has been annoying me all evening
– nrmad
Nov 15 '18 at 0:44
add a comment |
Filenames can't have /
in them, since those are directory separators. Change the format of your date to use different delimiters.
DATETIME=$(date +'%y-%m-%d-%H_%M_%S')
Filenames can't have /
in them, since those are directory separators. Change the format of your date to use different delimiters.
DATETIME=$(date +'%y-%m-%d-%H_%M_%S')
answered Nov 15 '18 at 0:40
BarmarBarmar
434k36258359
434k36258359
Thanks a lot, this has been annoying me all evening
– nrmad
Nov 15 '18 at 0:44
add a comment |
Thanks a lot, this has been annoying me all evening
– nrmad
Nov 15 '18 at 0:44
Thanks a lot, this has been annoying me all evening
– nrmad
Nov 15 '18 at 0:44
Thanks a lot, this has been annoying me all evening
– nrmad
Nov 15 '18 at 0:44
add a comment |
Thanks for contributing an answer to Stack Overflow!
- 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%2fstackoverflow.com%2fquestions%2f53310694%2fshell-script-tar-comand-mistaking-archive-name-for-directory%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
##!/bin/bash
has too many#
. It should just be#!/bin/bash
– Barmar
Nov 15 '18 at 0:31
Is that in the real script or a copying error?
– Barmar
Nov 15 '18 at 0:31
Put
set -x
at the beginning of the script. Then you'll see each command as it's executed.– Barmar
Nov 15 '18 at 0:32
Don't use all-uppercase variable names. By convention those names are used for environment variables.
– Barmar
Nov 15 '18 at 0:33
Make sure your script has Unix newlines, not Windows CRLF. Use
dos2unix filename
to fix it.– Barmar
Nov 15 '18 at 0:34