Ubuntu 16.04
我想备份所有 .txt、.cfg 和 .ini 文件,同时将它们的文件夹结构保留为备份文件夹中的 zip 文件。
我知道有一种更简单的方法可以完成整个操作,但这就是我所拥有的。
#!/bin/bash
wdir="/home/files"
backup_dir="/home/files/backup"
allcfg=$(find suan -name '*.cfg')
alltxt=$(find suan -name '*.txt')
allini=$(find suan -name '*.ini')
timeStamp="$(date +%Y--%b-%d--%k:%M--%P)"
backupfilename="${backup_dir}/Backup-${timeStamp}.zip"
#-- set some arrays ...
backupfiles=( "$allcfg" "$alltxt" "$allini" )
cd "$wdir"
zip -r "$backupfilename" "$backupfiles"
所以我可以看到它归档的文件的一个很好的输出,但是当它到达压缩部分时它会出错。
zip error: Nothing to do! (try: zip -r /home/files/backup/Backup-2018--Jul-04--21:37--pm.zip . -i suan/cfg/360controller.cfg
但这也行不通。
这就是
-r
递归选项的7z
工作原理,它是一种递归模式搜索。7z
创建 zip 文件就好了。find
如果您不知何故没有 7zip,您也可以执行多参数选项,使用
find
和zip
:您也可以先让脚本
cd
进入"$wdir"
,然后.
在find
命令中使用,具体取决于您希望在存档中保存的路径。这将找到所有相关文件并将它们存档在您的备份文件中。
或者
bash
,如果没有数千个文件:此处设置的 shell 选项启用
**
glob(其中 glob 路径名),使未扩展的 glob 扩展为空字符串并使 glob 匹配隐藏文件。