当前位置:首页>Linux>Linux命令每日一清单019:tar--归档打包命令速查表

Linux命令每日一清单019:tar--归档打包命令速查表

  • 2026-09-10 17:31:52
Linux命令每日一清单019:tar--归档打包命令速查表

tar(tape archive)是Linux/Unix系统中最核心的归档工具,用于将多个文件和目录打包成单个归档文件。tar本身不进行压缩,但通常与gzip、bzip2、xz等压缩工具结合使用,生成常见的.tar.gz、.tar.bz2、.tar.xz等压缩包格式。

作为系统管理的必备工具,tar广泛应用于备份数据、软件分发、系统迁移等场景。它能够保留文件权限、所有权、时间戳等元数据,支持增量备份、排除模式、远程传输等高级功能。掌握tar是每个Linux用户必须熟练的技能。

1. 基本语法

命令说明
tar -cf archive.tar files/
创建归档文件
tar -xf archive.tar
解压归档文件
tar -tf archive.tar
列出归档内容
tar -rf archive.tar file.txt
向归档追加文件(仅限未压缩)
tar --delete -f archive.tar file.txt
从归档中删除文件(仅限未压缩)

2. 创建归档

命令说明
tar -cf backup.tar /etc /var/www
打包多个路径
tar -cf project.tar project/
打包整个目录
tar -cvf project.tar project/
打包并显示详细信息
tar -cf archive.tar --files-from=filelist.txt
从文件列表创建归档
tar -cf archive.tar --exclude="*.log" app/
创建时排除特定模式
tar -cf archive.tar --exclude-from=exclude.txt app/
使用排除文件列表

3. 解压归档

命令说明
tar -xf archive.tar
解压到当前目录
tar -xvf archive.tar
解压并显示详细信息
tar -xf archive.tar -C /tmp/restore
解压到指定目录
tar -xf archive.tar path/in/archive.txt
只解压单个文件
tar -xf archive.tar "dir/*"
解压匹配模式的文件
tar -xf archive.tar --strip-components=1
剥离顶层目录
tar -xf archive.tar --keep-old-files
不覆盖现有文件
tar -xf archive.tar --skip-old-files
跳过已存在的文件

4. 查看与检查

命令说明
tar -tf archive.tar
列出归档中的文件
tar -tvf archive.tar
详细列出文件(含权限、大小等)
tar -tf archive.tar | head
预览前几个条目
tar -tf archive.tar | grep "nginx"
查找归档中的特定路径
tar --compare -f archive.tar
比较归档与文件系统的差异

5. 压缩格式

命令说明
tar -czf backup.tar.gz /data
创建gzip压缩包(.tar.gz)
tar -xzf backup.tar.gz
解压gzip压缩包
tar -cjf backup.tar.bz2 /data
创建bzip2压缩包(.tar.bz2)
tar -xjf backup.tar.bz2
解压bzip2压缩包
tar -cJf backup.tar.xz /data
创建xz压缩包(.tar.xz)
tar -xJf backup.tar.xz
解压xz压缩包

压缩率对比(通常):.tar.xz > .tar.bz2 > .tar.gz,速度相反。

6. 保留元数据

命令说明
tar -cpf system.tar /etc /var
打包系统目录并保留权限
tar -xpf rootfs.tar
解压并保留权限
tar --numeric-owner -cpf backup.tar /srv
使用数字UID/GID存储
tar --same-owner -xpf backup.tar
解压时保留原始所有权
tar --atime-preserve=system -cf backup.tar /data
保留文件访问时间

7. 增量备份

使用snapshot文件实现增量备份:

命令说明
tar --listed-incremental=snapshot.snar -cf full.tar /home
创建完整备份
tar --listed-incremental=snapshot.snar -cf inc-1.tar /home
创建增量备份(基于上次)
tar --listed-incremental=snapshot.snar -cf inc-2.tar /home
再次创建增量备份
tar -tf inc-1.tar
查看增量备份内容
tar -xf full.tar -C /restore
恢复完整备份
tar -xf inc-1.tar -C /restore
应用增量备份1
tar -xf inc-2.tar -C /restore
应用增量备份2

8. 排除模式

命令说明
tar -cf app.tar app/ --exclude="*.tmp"
按扩展名排除
tar -cf app.tar app/ --exclude="cache/*"
排除指定路径模式
tar -cf app.tar app/ --exclude-vcs
排除版本控制目录(.git等)
tar -cf app.tar app/ --exclude-from=exclude.txt
使用排除文件列表
tar -czf logs.tar.gz /var/log --exclude="*.gz"
排除已压缩的日志

9. 远程传输

通过SSH管道实现远程归档传输:

命令说明
tar -czf - /data | ssh user@host "cat > backup.tar.gz"
打包并发送到远程主机
ssh user@host "tar -czf - /data" | tar -xzf - -C /local
从远程拉取并解压
tar -cf - /data | ssh user@host "tar -xf - -C /restore"
直接流式传输到远程
tar -czf - /data | ssh user@host "gzip -d | tar -xf -"
远程自动解压

10. 实用组合模式

命令说明
tar -czf backup-$(date +%Y%m%d).tar.gz /home/user
创建带日期戳的备份
find /var/log -name "*.log" | xargs tar -czf logs.tar.gz
查找并打包特定文件
tar -czf - directory/ | split -b 100M - backup.tar.gz.
创建分卷压缩包
cat backup.tar.gz.* | tar -xzf -
解压分卷压缩包
tar -czf - directory/ | openssl enc -aes256 -out backup.tar.gz.enc
创建加密压缩包
openssl enc -aes256 -d -in backup.tar.gz.enc | tar -xzf -
解密并解压

11. 常用选项速查

选项完整名称说明
-c
--create
创建归档
-x
--extract
解压归档
-t
--list
列出归档内容
-f
--file
指定归档文件
-v
--verbose
显示详细信息
-z
--gzip
使用gzip压缩/解压
-j
--bzip2
使用bzip2压缩/解压
-J
--xz
使用xz压缩/解压
-C
--directory
切换到指定目录执行操作
-p
--preserve-permissions
保留文件权限
-P
--absolute-names
使用绝对路径(谨慎)
-r
--append
追加文件到归档
--delete
-
从归档中删除文件
--exclude
-
排除匹配的文件模式
--exclude-from
-
从文件读取排除列表
--listed-incremental
-
创建增量备份
--strip-components
-
剥离顶层目录数量

12. 故障排查

问题解决方法
tar: Cannot open: Permission denied
检查文件权限;使用sudo或以正确用户执行
tar: Unexpected EOF in archive
归档文件损坏或不完整;尝试使用--ignore-zeros
tar: Error exit delayed from previous errors
查看详细错误信息;可能是磁盘空间不足
解压后权限不对
使用-p选项保留权限;用--numeric-owner保持UID/GID
解压到错误目录
使用-C指定目标目录;避免在根目录执行
压缩包很大,解压慢
使用更快的压缩格式(如gzip而非xz);考虑不解压直接查看
符号链接解压后变成普通文件
确保文件系统支持符号链接;检查解压选项
tar: Removing leading '/' from member names
tar默认移除绝对路径开头的/,使用-P保留(危险)

温馨提示: 创建归档时建议始终使用-v选项查看操作进度;解压前先用-t查看内容,避免覆盖重要文件。对于系统备份,使用-p保留权限;跨系统恢复时使用--numeric-owner避免UID/GID映射问题。压缩格式选择上,gzip速度最快适合日常使用,xz压缩率最高适合归档存储,bzip2介于两者之间。使用--exclude排除日志、缓存等临时文件可以显著减小备份体积。

本文PDF格式下载:

  关注公众号(haopython),请回复: LLTTAR

最新文章

随机文章