将一个文件夹标记到另一个目录



我正在尝试创建一个bash脚本,该脚本将一个文件夹(或文件夹内容(归档到特定目录。

我的版本有效,但为了归档一个文件夹,它会归档我不想要的整个路径。有没有办法在不使用cd的情况下解决这个问题?我看到了一些使用-C的解决方案,但无论我把它放在哪里,我都会得到以下错误:refusing to create an empty archive

SRCDIR=~/Documents/sub1/sub2/sub3/source/*
DESTDIR=~/Documents/sub1/sub2/sub3/target/backup.tgz
tar czf $DESTDIR  --absolute-names  $SRCDIR

你可以试试这个:

SRCDIR=~/Documents/sub1/sub2/sub3/source/*
DESTDIR=~/Documents/sub1/sub2/sub3/target/backup.tgz
tar czf $DESTDIR --absolute-names -C $(dirname $SRCDIR) $(basename $SRCDIR)

正如你在我的例子中看到的那样,我使用-C选项来更改目录,并结合源目录的dirname和basename

OTHER OPTIONS
-C, --directory DIR
change to directory DIR

通常,当使用'-C'时,通配符扩展无法正常工作,因为它会尝试在调用命令的当前目录中扩展通配符(在本例中为'*'(,而不是在SRCDIR位置。

如果希望所有文件都包含在存储库中,请使用"(它还将包括隐藏文件!(。

SRCDIR=~/Documents/sub1/sub2/sub3/source/*
DESTDIR=~/Documents/sub1/sub2/sub3/target/backup.tgz
tar czf $DESTDIR -C "$(dirname $SRCDIR)" .

附带说明一下,最初的帖子使用了"--绝对名称"。您可能需要重新考虑使用此标志,因为这会使将文件恢复到除文件原始位置之外的任何其他位置变得极其困难。

相关内容

  • 没有找到相关文章

最新更新