可直接用-r向未压缩.tar追加文件,但不能向.tar.gz等压缩包追加;因压缩破坏归档结构,需先解压再追加后重压,-r仅支持纯.tar且不更新同名文件。

可以直接用 -r(append)选项向未压缩的 .tar 归档文件末尾追加文件,但不能对已压缩的 .tar.gz、.tar.bz2 或 .tar.xz 文件直接追加——因为压缩格式破坏了原始归档结构,tar -r 仅支持纯 .tar(未压缩)文件。
✅ 正确追加的前提:目标必须是未压缩的 tar 包
比如你有一个 backup.tar(不是 backup.tar.gz),就可以安全追加:
tar -rvf backup.tar newfile.txt
-
-r:追加(append)模式,把文件写到归档末尾 -
-v:显示操作过程(可选,便于确认) -
-f backup.tar:指定归档文件名(-f后必须紧跟文件名)
追加后可用 -t 查看内容验证:
tar -tf backup.tar
❌ 为什么不能向 .tar.gz 追加?
因为 gzip 压缩后的文件是整体编码的,tar -r 无法在压缩流中插入新数据。
常见错误写法(会失败或损坏文件):
tar -rvf archive.tar.gz extra.txt # ❌ 报错或静默失败
✅ 正确做法是:先解压 → 追加 → 重新压缩
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
gunzip archive.tar.gz # 解压成 archive.tar tar -rvf archive.tar extra.txt # 追加文件 gzip archive.tar # 重新压缩为 archive.tar.gz
或者一步完成(不保留中间 .tar):
gunzip -c archive.tar.gz | tar -rvf - extra.txt | gzip > archive-new.tar.gz
⚠️ 注意:
-r只能追加,不能更新或替换已有同名文件;如需按时间更新,请用-u(update),但它也只适用于未压缩 tar 包。
? 补充:合并多个 tar 包(无压缩时)
若有两个 .tar 文件,可用 -A 合并:
tar -Af a.tar b.tar # 将 b.tar 内容追加进 a.tar
? 小贴士
- 追加操作不会改变原归档中已有文件的顺序或元数据(权限、时间戳等均保留)
-
tar -r不支持通配符展开(如*.log),需显式列出文件或配合 shell 展开:tar -rvf backup.tar *.log
- 如果不确定归档是否压缩,先检查:
file archive.tar*
不复杂但容易忽略细节。

















