tar命令实现数据备份 2016-10-09 • Lu Tao 常用选项 -z, --gzip #使用gzip(解)压缩,后缀一般为.gz -c, --create #创建文件,后缀一般为.tar -f, --file #后接打包文件名 -x, --extract #解包命令,与-c对应,不能同时出现 -p #保留备份数据的原本权限和属性 -g, --listed-incremental #后接增量备份的快照文件 -C #指定解压缩的目录 --exclude #排除不打包的目录或文件,支持正则匹配 -X, --exclude-from #后接一个文件,内容为需要排除的目录或文件,每行一个 -t, --list #列出备份档案中的文件列表,不与-c、-x同时出现 -j, --bzip2 #使用bzip2工具(解)压缩,后缀一般为.bz2 -J, --xz #后缀一般为.xz -P #保留绝对路径,解压时同样会自动解压到绝对路径下 -v #(解)压缩过程显示文件处理过程,常用但不建议对大型文件使用 常用命令示例 tar cvf[i] xxxx.tar[.ext] filelist tar xvf[i] xxxx.tar[.ext] # [i]是处理不同格式文件时的指示符,与[.ext]的对应关系如下 z => .gz j => .bz2 J => .xz # .7z格式的文件,需要安装p7zip包,使用7z命令 7z x xxxx.7z #解压缩 # 打包dir目录,排除目录中的exclude_dir目录 tar cvfz dir.tar.gz --exclude exclude_dir dir # @标记符的使用,将newfile和original.tar中包含的文件一起打包进入new.tar.gz, tar cvfz new.tar.gz newfile @original.tar # 注意对比下面的命令,这个只是把newfile和original.tar这两个文件打包,最后new.tar.gz中只包含这两个文件 tar cvfz new.tar.gz newfile original.tar 备份大文件 # 备份当前目录,并以每个文件10M的大小分割,split可以自定义分割生成的文件的前缀 # -g建立快照,实现增量备份,快照不存在时,会全量备份 tar cpvfz - -g /tmp/snapshot.snap ./ | split -b 10M - /tmp/bak.tar.gz_ # 恢复过程 cat /tmp/bak.tar.gz_a* | tar xvfzp - -C /tmp/data/ 结合find进行文件备份 find . -name '*.bson' | xargs tar cvfz /tmp/bak.tar.gz 远程备份 # 远端文件备份到本地 ssh server tar cvfz - bak_dir | cat > bak.tar.gz # 本地文件传输到远程 tar cvfz - file | ssh server "tar xvfz -" # 本地文件压缩到远程 tar cvfz - file| ssh server "cat > file.tar.gz" # 本地文件解压到远程 ssh server "tar xvfz -" < file.tar.gz # 远程文件解压到本地 ssh server "cat file.tar.gz" | tar xvfz - 相关链接 ssh tar 命令把远程文件拉回来或推过去 tar命令高级用法——备份数据