Shell Script - tar comand mistaking archive name for directory










0















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










share|improve this question
























  • ##!/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















0















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










share|improve this question
























  • ##!/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













0












0








0








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










share|improve this question
















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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











  • 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

















  • ##!/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
















##!/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












1 Answer
1






active

oldest

votes


















0














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')





share|improve this answer























  • Thanks a lot, this has been annoying me all evening

    – nrmad
    Nov 15 '18 at 0:44










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
);



);













draft saved

draft discarded


















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









0














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')





share|improve this answer























  • Thanks a lot, this has been annoying me all evening

    – nrmad
    Nov 15 '18 at 0:44















0














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')





share|improve this answer























  • Thanks a lot, this has been annoying me all evening

    – nrmad
    Nov 15 '18 at 0:44













0












0








0







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')





share|improve this answer













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')






share|improve this answer












share|improve this answer



share|improve this answer










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

















  • 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



















draft saved

draft discarded
















































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.




draft saved


draft discarded














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





















































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

Use pre created SQLite database for Android project in kotlin

Darth Vader #20

Ondo