我正在使用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 :(得分:0)
您可以将绝对路径存储在变量中,并在tar
命令中使用它:
BackUpDirFullPath=$(cd BackUp && pwd)
当command substitution
调用子shell时,您不会通过执行cd
离开当前目录。
<强>更新强>
为了使-v
输出绝对路径(在Mac OS上),我必须更改为子shell中的根目录并从那里执行...就像这样:
(cd / && tar -cvf /$OLDPWD/BackUp.tgz $BackUpDirFullPath)
这会输出绝对路径...以保留您可能会尝试保留路径名的/
的前导-P
。