我在我的 Debian 8 系统上编写了一个备份脚本,它使用带有“--exclude-from”的 tar 命令来排除一些文件/目录。
这很好用,但今天我想排除一些共享相同路径模式的文件,/home/www-data/sites/<some_string>log.txt例如/home/www-data/sites/<one_or_two_directories>/vendor.
我试图附加/home/www-data/sites/*log.txt到文件中,但 tar 失败并在 stderr 上输出以下错误:
tar: /home/www-data/sites/*log.txt: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
Run Code Online (Sandbox Code Playgroud)
我错过尝试使用的东西时,*还是**?
然后我在 Unix 中读到,程序通常不会自己解释通配符,这意味着它*不会**被 tar扩展。
据我所知,我在这里的最后手段是在tar调用之前使用 bash 扩展列表并将其附加到排除文件中(如果它还没有)。有更干净的方法吗?
编辑
这是脚本片段..
# ...
broot=$(dirname "${PWD}")
i="${PWD}/list.include"
x="${PWD}/list.exclude"
o="$broot/archive.tgz"
tar -zpcf $o -T $i -X $x
# ...
Run Code Online (Sandbox Code Playgroud)
这里的丹斯是排除文件..
/etc/php5/fpm
/etc/nginx
/etc/mysql …Run Code Online (Sandbox Code Playgroud) 我最近安装了 mdadm 并设置了一个涉及 2 个 500GIO 驱动器的 raid1 配置。
有没有办法在某处备份 RAID 配置,以便我可以使用单个 mdadm 命令重新加载它,以防我必须重新安装我的系统?
假设我的系统安装在某个 ssd 上,出于某种原因我必须重新安装它。问题是,我已经创建了 RAID1(涉及另外两个磁盘).. 是否可以快速恢复此 RAID1 磁盘而无需执行所有创建步骤(擦除磁盘、创建、同步等)。换句话说,是 RAID 丢失了还是 mdadm 可以恢复现有磁盘?
给定的
hasArgs=a:b:c:
x=b
if [[ ${hasArgs} = *$x:* ]] ; then …
Run Code Online (Sandbox Code Playgroud)
我希望我可以用较少的 Bash 特定替代品替换上面的双括号测试(意味着没有子shell/命令等)
参数扩展没有帮助,因为它不扩展变量。
if [ "${hasArgs}" != "${hasArgs#$x:}" ] ; then …
Run Code Online (Sandbox Code Playgroud)
是否有适合此用例的简单(一行)解决方案?