我正在使用linux shell脚本(Debian)来创建某些目录的备份。
它已经在一个目录中工作:
#!/bin/bash
DIRNAME="directory1"
# This is the backup
tar cfv "_backups/NEW.tar" $DIRNAME > /dev/null 2>&1
...
# This is the restore
rm -rf $DIRNAME
tar xfv ...
现在我需要备份&恢复多个逗号分隔的目录。即:
#!/bin/bash
DIRNAMES="directory1,directory2,directory3,..."
问题:如何触发tar cfv
命令以将$DIRNAMES
中的目录打包到一个tar中,如何触发rm -rf
以便它在tar提取之前删除这些目录?
答案 0 :(得分:1)
假设目录中没有任何名称空格,只需将逗号转换为空格,并利用shell的单词分割。
dirs=${DIRNAMES//,/ }
set -f # disable glob expansion for safety
# This is the backup
tar cfv "_backups/NEW.tar" $dirs > /dev/null 2>&1 # do not quote $dirs
# This is the restore
rm -rf $dirs # do not quote $dirs
tar xfv ...