如何使用bash在日志文件中存储备份文件的绝对路径?

时间:2017-10-20 18:30:28

标签: bash ubuntu unix

我正在使用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

1 个答案:

答案 0 :(得分:0)

您可以将绝对路径存储在变量中,并在tar命令中使用它:

BackUpDirFullPath=$(cd BackUp && pwd)

command substitution调用子shell时,您不会通过执行cd离开当前目录。

<强>更新
为了使-v输出绝对路径(在Mac OS上),我必须更改为子shell中的根目录并从那里执行...就像这样:

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

这会输出绝对路径...以保留您可能会尝试保留路径名的/的前导-P