我使用带有 Bash 4.3.48(1) 和zip
3.0 的 Ubuntu 16.04 (xenial)。
在包含具有许多不同功能的 bash 脚本 ( #!/bin/bash
) 的文件中,我还使用此功能在一个 zip 文件中创建完整的数据库备份 + 文档根备份:
imb() {
drt="/var/www/html"
date="$(date +%F-%T)"
mysqldump -u root -p --all-databases | zip "$drt/db-$date.zip" - # Note the hyphen before this comment;
zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*"
rm -f "$drt/db-$date.zip"
}
我获取了上述文件 ( source ~/function.sh
) 并imb
在调试模式 ( set -x
) 下执行:
我被提示输入数据库密码,然后过了一段时间(表明创建了数据库备份)。此外,出现了一个详细的 zip(太长而无法在终端中粘贴或跟踪),表明文档根目录下的所有内容都已压缩。
然而,没有备份出现在/var/www/html/
.
我的问题
由于评论,我觉得我应该问两个问题,我发现它们相似但实际上不同:
zip 将我的文件放在哪里(例如,假设这不是手动创建意义上的“文件创建”
touch
)?当然,由进程创建并位于某处的文件不一定归我的用户所有。我如何找出当前用户创建的最后一个文件的位置?
我希望它位于/var/www/html/
:
zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*"
但不是。如果不从根 () 开始在系统的整个文件树上运行,我不知道一种有效的方法来知道它是在哪里创建的/
,因为这在该机器上可能需要几个小时。
更新
在写这个问题时,我访问了我的主目录($HOME/
),在那里我找到了该文件,但我不知道为什么它是在文档根目录下创建的。
在当前目录中创建一个存档,不管它是什么(在这种情况下是你的主目录)。
如果你想在 中创建存档
${drt}
,你需要告诉zip
:没有简单的方法可以找出任何给定用户创建的最后一个文件的位置。您需要
find
通过减少时间戳来使用和排序。使用最后修改时间作为创建时间的近似值: