如何使用bash在日志文件中存储备份文件的绝对路径?
问题描述:
我正在使用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
答
您可以在绝对路径保存在一个变量和tar
命令使用它:
BackUpDirFullPath=$(cd BackUp && pwd)
由于command substitution
调用一个子shell,你不离开当前d通过执行cd
来执行。
更新:
为了使-v
输出绝对路径(在Mac OS),我不得不改变到根目录下的子shell,并从那里执行它......类似的东西:
(cd/&& tar -cvf /$OLDPWD/BackUp.tgz $BackUpDirFullPath)
这会输出绝对路径...为了保留前导/
,您可以尝试-P
,它可以保留路径名称。
不太确定我理解你的问题。你想获得什么的完整路径,为了什么目的? https://stackoverflow.com/questions/5265702/how-to-get-full-path-of-a-file? – mattias
将其存储在日志文件中 – Nikul
什么是_it_?你的脚本中哪些代码是你不满意的? – mattias