尝试设置一个 cronjob,每晚运行 tar 脚本来备份站点(不带 .git 和设置文件夹),并将带有时间戳的档案上传到 Dropbox。
这让我很为难,因为存档和其中的所有内容一起创建,似乎排除标志现在由于某种原因不起作用了。也许是 zsh 的字符转义问题,不确定,仍在学习。请帮忙。
#!/bin/zsh
DATE=`date +%d-%m-%Y---%H-%M-%S`
FILE=backup-$DATE.tar.bz2
DROPBOX=/home/pentago/appz/bin/dropbox.py
TARGET=/home/pentago/public_html/
DESTINATION=/home/pentago/Dropbox/Backups
EXCLUDED={setup,.git*}
tar -cpPf $FILE --exclude=$EXCLUDED $TARGET{*,.*}
答案1
您的脚本中存在一些问题。您需要添加选项j
才能tar
创建 bzip2 文件。我认为排除命令被忽略了,因为您明确添加了全部将目标中的文件添加到 tar 的输入文件列表中。您不需要$TARGET/*
简单地$TARGET
这样做。最后,排除的 blob 可能正在当前目录中扩展,而不是在目标目录中。
尝试这样的操作:
#!/bin/zsh
DATE=`date +%d-%m-%Y---%H-%M-%S`
FILE=backup-$DATE.tar.bz2
DROPBOX=/home/pentago/appz/bin/dropbox.py
TARGET=/home/pentago/public_html/
DESTINATION=/home/pentago/Dropbox/Backups
tar -cjpPf $FILE --exclude=setup --exclude=.git $TARGET
答案2
您确实应该使用 git-archive 来实现这一点。
git archive -o $FILE HEAD
为避免包含,setup
您需要export-ignore
在其上设置属性。请参阅man gitattributes
和man git-archive
(大量示例)。请注意,这假设设置已签入,否则您无需执行任何操作。