Linux 递归创建文件夹的新tar文件,不包括另一个tar文件中包含的文件
我每天都在备份我的邮件服务器和电子邮件 每晚都会更新一个tar文件以包含当天的新电子邮件,并通过ftp下载到备份服务器 随着时间的推移,这个tar文件变得太大而无法处理 为了解决这个问题,我决定最好创建一个新的tar文件,其中包含所有邮件,减去昨晚备份中已经存在的邮件。所以它最后只剩下那天的新文件 然后,我可以将这个小得多的文件传输到备份服务器 最后,我可以将新的tar文件合并到两台服务器上的主服务器中,为第二天做好准备Linux 递归创建文件夹的新tar文件,不包括另一个tar文件中包含的文件,linux,bash,unix,tar,Linux,Bash,Unix,Tar,我每天都在备份我的邮件服务器和电子邮件 每晚都会更新一个tar文件以包含当天的新电子邮件,并通过ftp下载到备份服务器 随着时间的推移,这个tar文件变得太大而无法处理 为了解决这个问题,我决定最好创建一个新的tar文件,其中包含所有邮件,减去昨晚备份中已经存在的邮件。所以它最后只剩下那天的新文件 然后,我可以将这个小得多的文件传输到备份服务器 最后,我可以将新的tar文件合并到两台服务器上的主服务器中,为第二天做好准备 你知道我该怎么做吗 使用tar和查找 下面是一个使用find和tar创建f
你知道我该怎么做吗 使用
tar
和查找
下面是一个使用find
和tar
创建full
和incremental
备份的示例脚本
#!/bin/bash
bkdir="/home/backup"
bklog="/var/log/backup.log"
dbkdir="/home/backup/files/daily"
wbkdir="/home/backup/files/weekly"
curdate=`date +%Y-%M-%d-%H:%M:%S`
ardate=`echo $curdate | sed -e 's/:/_/g' -e 's/-/_/g'`
wday=`date +%a`
files_full_backup () {
echo -e "Archiving files...n"
tar cjpf "$1/full_files_$ardate.tar.bz2" "$bkdir"
}
files_inc_backup () {
echo -e "Archiving files...n"
find $bkdir -mtime -1 -exec tar cvjpf "$1/inc_files_$ardate.tar.bz2" {} ;
}
### add some choice what kind of backup to do - full or incremental
if [ $wday != Sun ]
then
echo -e "As today is not Sunday - I'll start incremental backup.n"
files_inc_backup $dbkdir
else
echo -e "As today is Sunday - I'll start full backup.n"
files_full_backup $wbkdir
fi
仅使用
tar
(增量备份)
man tar
显示is具有“增量功能”:
要创建增量备份,请使用:
tar --create --file=`date +%s`.tbz2 --bzip --listed-incremental=example.snar --verbose example/
或简而言之:
tar -cvjg example.snar -f `date +%s`.tbz2 example/
for i in *.tbz2; do tar -xjGf "$i"; done;
要恢复备份,需要将bcakup的所有部分从最旧的解包到最新的解包:
tar --extract --incremental --file level0.tar
tar --extract --incremental --file level1.tar
tar --extract --incremental --file level2.tar
或者,简而言之:
tar -cvjg example.snar -f `date +%s`.tbz2 example/
for i in *.tbz2; do tar -xjGf "$i"; done;
下面是一个脚本,用于每周创建一次零级存档(或每月一次,取决于注释行):
并执行它:
./backup.sh example/ -v
使用find、grep等创建每日备份,或者使用类似bareos的应用程序,但最好是备份电子邮件的特定工具。我无法在服务器上安装。我有一个非特权用户帐户。使用
tar-t
,您可以列出tar文件的条目。@Joao Vitorino-tar中的compare/diff选项不考虑文件系统中没有出现在tarball中的新文件。