2017-10-20 65 views
0

我正在使用bash创建备份系统。我的代码是如何使用bash在日志文件中存储备份文件的绝对路径?

#!/bin/bash 
    if [ ! -d "BackUp" ] 
    then 
    mkdir BackUp 
    fi 

    echo "enter number of access days you want to take for back up." 
    read days 

    bak="$(find . -mtime +$days)" 

    for file in $bak 
    do 
    mv $file BackUp 
    done 

    tar -cvf BackUp.tgz BackUp >> backUp.log 

所以,目前我只从tar取日志文件。所以它不会打印完整路径,它只需要将当前工作目录中的文本放入日志文件中。我的最后一行代码为日志文件占用了输入。

但是存放的路径是

.BackUp/foo1 
.BackUp/foo2 
.BackUp/foo3 

相反,我希望它是

home/ubuntu/Downloads/BackUp/foo1 
home/ubuntu/Downloads/BackUp/foo2 
home/ubuntu/Downloads/BackUp/foo3 
+0

不太确定我理解你的问题。你想获得什么的完整路径,为了什么目的? https://stackoverflow.com/questions/5265702/how-to-get-full-path-of-a-file? – mattias

+0

将其存储在日志文件中 – Nikul

+1

什么是_it_?你的脚本中哪些代码是你不满意的? – mattias

回答

0

您可以在绝对路径保存在一个变量和tar命令使用它:

BackUpDirFullPath=$(cd BackUp && pwd) 

由于command substitution调用一个子shell,你不离开当前d通过执行cd来执行。

更新:
为了使-v输出绝对路径(在Mac OS),我不得不改变到根目录下的子shell,并从那里执行它......类似的东西:

(cd/&& tar -cvf /$OLDPWD/BackUp.tgz $BackUpDirFullPath) 

这会输出绝对路径...为了保留前导/,您可以尝试-P,它可以保留路径名称。