我一段时间制作了一个脚本,它会使用zip
来压缩几个不同的用户指定目录。脚本执行此操作的方式是从config.txt
读取目录并单独压缩每个目录。事实恰恰相反,对于我的用途,所有这些目录都在同一个父目录中。例如,我的/Users/username/
目录中将包含以下目录:
Desktop
Documents
Pictures
有没有办法将这3个组合在同一档案中?
作为参考,这是我当前的脚本:
BKUPDATE="/Users/michaelgarrison/Backup/BKUP_"$(date +%Y)-$(date +%m)-$(date +%d)
# Create the Backup directory if it does not exist
mkdir -p $BKUPDATE
# File where directories are specified
CONFIG="config.txt"
while read SOURCE
do
DESTINATION="/Users/michaelgarrison/"
OUTPUT=$BKUPDATE"/Backup_"$SOURCE"_"$(date +%Y)-$(date +%m)-$(date +%d)".zip"
(cd /Users/michaelgarrison/; zip -r $OUTPUT $SOURCE)
done < $CONFIG
答案 0 :(得分:10)
zip -r backup Desktop/* Documents/* Pictures/*
这将压缩名为backup.zip
排序的诀窍是从config.txt文件中读取列表,可能是一个垂直列表或数组,并使其成为一个长字符串。
答案 1 :(得分:1)
请阅读评论和答案,他们以一种好的方式回答了您的问题!!
OUTPUT = “/用户/ michaelgarrison /” $ BKUPDATE “/备份_” $(日期 + “%Y-%间 - %d”) “拉链” DESTINATION =“/ Users / michaelgarrison /”&lt; ---------你需要这个吗?我想你不
while read SOURCE do zip -r $OUTPUT $SOURCE done < $CONFIG
如果您想多次执行此操作,可以使用rsync
答案 2 :(得分:0)
我想我刚刚回答了我自己的问题,但不是删除我会留在这里以供将来参考。我所做的是为每次传递将输出更改为相同的zip文件。
我所做的就是改变:
while read SOURCE
do
DESTINATION="/Users/michaelgarrison/"
OUTPUT=$BKUPDATE"/Backup_"$SOURCE"_"$(date +%Y)-$(date +%m)-$(date +%d)".zip"
(cd /Users/michaelgarrison/; zip -r $OUTPUT $SOURCE)
done < $CONFIG
为:
OUTPUT=$BKUPDATE"/Backup_"$(date +%Y)-$(date +%m)-$(date +%d)".zip"
while read SOURCE
do
DESTINATION="/Users/michaelgarrison/"
(cd /Users/michaelgarrison/; zip -r $OUTPUT $SOURCE)
done < $CONFIG