下面的脚本根据当前的系统时间生成压缩文件名,并备份文件到指定目录:
DIR=/www/webbackup/web/
FILE_NAME=`date +%y%m%d%H`
FILE_NAME=$DIR/oom_$FILE_NAME.tar.gz
echo start backup to $FILE_NAME at `date`
tar zcvf $FILE_NAME /www/outofmemory.cn DIR=/www/webbackup/ugc/
FILE_NAME=`date +%y%m%d%H`
FILE_NAME=$DIR/ugc_$FILE_NAME.tar.gz
tar zcvf $FILE_NAME /www/ugc echo finish backup at `date`
http://outofmemory.cn/code-snippet/2189/tar-dabao-backup-directory-shell-script
tar时报错:从成员名中删除开头的"/"
解决办法:
在bash script中先cd到需要使用tar命令压缩文件所在的目标,然后执行tar命令即可:
#!/usr/bin/env bash DIR=/home/backup
FILE_NAME=`date +%y%m%d%H`
FILE_NAME=${DIR}/front_end_${FILE_NAME}.tar.gz
echo start backup to ${FILE_NAME} at `date`
cd /opt/project
tar zcf ${FILE_NAME} todoList/
echo finish backup at `date`
find /opt/backup/ -mtime + -type f
find /opt/backup/ -mtime + -type f |xargs rm -f
今天测试一个打包/var/log下log文件的脚本,但是在执行的时候报错:tar: 从成员名中删除开头的“/”,在反复检测脚本文件后确认没有什么错误,虽然报错,但还是成功进行打包了,如下图:
后来通过查询资料,得知是由绝对路径搞的
也可以在tar命令执行时使用参数P,但解压时也需要使用参数P,否则报错
执行压缩的命令:
tar czPf bak.tar.gz /opt/wx
执行解压缩的命令:
tar xzPf bak.tar.gz
http://blog.51cto.com/firelong/1767457
man tar:
-P, --absolute-names
don't strip leading `/'s from file names
今天尝试编译内核,下载到了一份tar.xz结尾的压缩文件,网上解决方法比较少,不过还是找到了,如下:
$xz -d ***.tar.xz
$tar -xvf ***.tar
可以看到这个压缩包也是打包后再压缩,外面是xz压缩方式,里层是tar打包方式。
补充:目前可以直接使用 tar xvJf ***.tar.xz来解压