如何使用 bash 在日志文件中存储备份文件的绝对路径?
Posted
技术标签:
【中文标题】如何使用 bash 在日志文件中存储备份文件的绝对路径?【英文标题】:How to store absolute path of back up files in log file using bash? 【发布时间】:2018-04-01 23:40:40 【问题描述】:我正在使用 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
【问题讨论】:
不太确定我是否理解您的问题。你想得到什么的完整路径,目的是什么? ***.com/questions/5265702/… ? 将其存储在日志文件中 什么是它?您对脚本中的哪一行代码不满意? @Nikul 你只是指向你的本地路径来查找文件、移动文件和压缩。你能澄清你的问题吗? @mattias 目前我正在从最后一行代码中输入日志文件,该代码显示哪些文件正在被压缩。 【参考方案1】:您可以将绝对路径存储在变量中并在tar
命令中使用它:
BackUpDirFullPath=$(cd BackUp && pwd)
由于command substitution
调用子shell,您不会通过执行cd
离开当前目录。
更新:
为了使-v
输出绝对路径(在Mac OS 上),我必须更改到子shell 中的根目录并从那里执行它......类似这样:
(cd / && tar -cvf /$OLDPWD/BackUp.tgz $BackUpDirFullPath)
这确实会输出绝对路径...为了保留前导 /
,您可以尝试保留路径名称的 -P
。
【讨论】:
以上是关于如何使用 bash 在日志文件中存储备份文件的绝对路径?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Shell (BASH/ZSH/SH) 获取文件的绝对路径?