Linux 指令篇:tar 命令详解与实战
前言
tar(Tape Archive)是 Linux 中用于打包和压缩文件的常用命令,主要用于创建归档文件(archive)并进行解压。它不仅支持多种压缩格式,还能高效管理备份文件。
1. tar 命令的基本语法
tar 命令的基本格式如下:
tar [选项] [归档文件] [文件或目录]
常见选项及详细解释
选项 | 作用 | 详细说明 |
---|---|---|
-c | 创建归档文件 | 生成一个新的 tar 归档文件 |
-x | 解压归档文件 | 从 tar 归档中提取文件 |
-v | 显示详细信息 | 在执行过程中列出被处理的文件 |
-f | 指定文件名 | 指定归档文件的名称 |
-z | 使用 gzip 压缩 | 结合 gzip 进行压缩,生成 .tar.gz 文件 |
-j | 使用 bzip2 压缩 | 结合 bzip2 进行压缩,生成 .tar.bz2 文件 |
-J | 使用 xz 压缩 | 结合 xz 进行压缩,生成 .tar.xz 文件 |
-r | 追加文件到归档 | 将新文件添加到已有 tar 归档中 |
-t | 列出归档内容 | 显示 tar 归档中的文件列表 |
--remove-files | 归档后删除原文件 | 归档成功后删除源文件,避免占用空间 |
--exclude=PATTERN | 排除特定文件 | 在归档时排除匹配的文件 |
2. tar 命令的使用示例
2.1 创建 tar 归档文件
将 dir1
目录打包为 archive.tar
:
tar -cvf archive.tar dir1/
使用 gzip 压缩归档:
tar -czvf archive.tar.gz dir1/
使用 bzip2 压缩归档:
tar -cjvf archive.tar.bz2 dir1/
2.2 解压 tar 归档文件
解压 tar
归档文件:
tar -xvf archive.tar
解压 tar.gz
归档文件:
tar -xzvf archive.tar.gz
解压 tar.bz2
归档文件:
tar -xjvf archive.tar.bz2
2.3 查看归档文件内容
列出 tar
归档文件的内容:
tar -tvf archive.tar
2.4 追加文件到已有 tar 归档
向 archive.tar
添加 file.txt
:
tar -rvf archive.tar file.txt
2.5 从归档文件中提取特定文件
从 archive.tar
提取 file.txt
:
tar -xvf archive.tar file.txt
2.6 删除归档文件中的某个文件
tar 本身不支持直接删除文件,但可以使用以下方法重新创建归档:
tar --exclude=file.txt -cvf new_archive.tar archive.tar
2.7 归档后删除原文件
将 logs/
目录打包,并在成功后删除原文件:
tar -czvf logs_backup.tar.gz --remove-files logs/
2.8 仅归档最近修改的文件
归档最近 7 天内修改的文件:
find /path/to/files -mtime -7 -print | tar -czvf recent_files.tar.gz -T -
3. tar 命令高级使用场景
3.1 远程备份(结合 SSH)
将 /var/log/
目录打包并传输到远程服务器:
tar -czvf - /var/log/ | ssh user@remote "cat > /backup/logs.tar.gz"
3.2 解压到指定目录
解压 archive.tar.gz
到 /tmp/
目录:
tar -xzvf archive.tar.gz -C /tmp/
3.3 备份 MySQL 数据库
结合 mysqldump
进行数据库备份并压缩:
mysqldump -u root -p database_name | gzip > database_backup.sql.gz
3.4 增量备份
创建快照文件以跟踪增量备份的变化:
tar -czvf full_backup.tar.gz --listed-incremental=backup.snar /home/user/
进行增量备份(基于 backup.snar
记录的变化):
tar -czvf incremental_backup.tar.gz --listed-incremental=backup.snar /home/user/
4. 总结
tar 是 Linux 中强大的打包和压缩工具,熟练掌握它的用法可以极大提升文件管理和备份的效率。
如果觉得这篇博客对你有帮助,记得点赞 ⭐、收藏 📌、关注 🚀!