如何使用来自用户输入的绝对路径来备份目录?

时间:2012-04-09 11:38:21

标签: linux bash backup

我有一个脚本可以将用户输入作为绝对路径(使用fselect对话框)。

backupdir=$(user_select "choose a directory backup destination");

我用过

tar cvzf backup.tar.gz $backupdir

然而,这包括绝对目录路径(* 1),所以我尝试(使用脚本):

tar czvf backup.tar.gz -C $PATH directory-to-backup

因此,在我的脚本中我可以使用:

pathtodir = dirname $backupdir 

获取备份目录的$ PATH但我需要备份目录的名称,即:

dirname = ..
tar czvf backup.tar.gz -C $PATH $dirname

如何获取$ dirname的名称?

1 - “从成员名称中删除前导'/'

1 个答案:

答案 0 :(得分:1)

好吧,说实话,我一开始就难以弄清楚问题。我想我们在评论中对此进行了排序。

所以你有$backupdir,其中包含备份目录的绝对路径,加上$pathtodir,它是备份目录的父目录。

现在可以在Bash中使用字符串替换,如下所示:

# Replace $pathtodir with empty string inside $backupdir
relativepath=${backupdir//$pathtodir/}
# Now remove the leading slash, if any
relativepath=${relativepath#/}

如果我误解了某些内容,请告诉我,我会相应地调整答案。