Linux 文件归档和备份
文章目录
- Linux 文件归档和备份
- tar 命令语法
- tar 包管理
- 创建一个 tar 包
- 查看 tar 包中文件
- 提取 tar 包中文件
- tar 包中追加文件
- 删除tar包中文件
- tar 包压缩管理
Linux 文件归档和备份
归档和压缩文件对于创建备份和通过网络传输数据非常有用。
用于创建和使用备份存档的最古老和最常用的命令之一是 tar 命令。
tar可以将大量文件集合到一个文件(存档)中,还可以使用 gzip,bzip2或xz压缩来压缩存档。
tar 命令语法
tar 包管理
创建一个 tar 包
#-c是创建,-f是名字
# 创建tar包,确保用户有权限访问目标文件
[root@server ~ 11:27:21]# tar -cf etc.tar /etc
tar: 从成员名中删除开头的“/”
#查看
[root@server ~ 11:27:35]# ll etc*
-rw-r--r-- 1 root root 30269440 9月 16 11:27 etc.tar
#二次创建不会提示覆盖
[root@server ~ 11:28:13]# tar -cf etc.tar /etc
tar: 从成员名中删除开头的“/”加时间
[root@server ~ 11:28:37]# tar -cf etc-$(date +%Y%m%d).tar /etc
tar: 从成员名中删除开头的“/”
[root@server ~ 11:29:00]# ll etc*
-rw-r--r-- 1 root root 30269440 9月 16 11:29 etc-20250916.tar
-rw-r--r-- 1 root root 30269440 9月 16 11:28 etc.tar
查看 tar 包中文件
#-t查看
# 查看tar包内容
[root@server ~ 11:29:49]# tar -t -f etc-20250916.tar
... ...
etc/httpd/conf.modules.d/00-proxy.conf
etc/httpd/conf.modules.d/00-systemd.conf
etc/httpd/conf.modules.d/01-cgi.conf
etc/httpd/logs
etc/httpd/modules
etc/httpd/run
# 配合grep过滤
[root@server ~ 11:29:49]# tar -t -f etc-20250916.tar | grep etc/host
etc/host.conf
etc/hosts
etc/hosts.allow
etc/hosts.deny
etc/hostname
提取 tar 包中文件
#-x提取
# 提取所有文件
[root@server ~ 11:30:33]# tar -xf etc-20250916.tar
#查看验证
[root@server ~ 11:31:28]# tree -L 1 etc/yum
etc/yum
├── fssnap.d
├── pluginconf.d
├── protected.d
├── vars
└── version-groups.conf4 directories, 1 file
# 提取部分文件
[root@server ~ 11:32:27]# tar -t -f etc-20250916.tar | grep etc/host
etc/host.conf
etc/hosts
etc/hosts.allow
etc/hosts.deny
etc/hostname[root@server ~ 11:33:35]# tar -xf etc-20250916.tar $(tar -t -f etc-20250916.tar|grep etc/host)
[root@server ~ 11:33:50]# tree etc
etc
├── adjtime
├── aliases
... ...
tar 包中追加文件
#-r追加
[root@server ~ 11:40:24]# tar -r -f etc-20250916.tar hello.txt[root@server ~ 11:40:32]# tar -t -f etc-20250916.tar | grep hello*
hello.txt
删除tar包中文件
#–delete删除
[root@server ~ 11:42:56]# tar --delete -f etc-20240726.tar
[root@server ~ 11:43:12]# ls
anaconda-ks.cfg etc-20240726.tar etc.tar
etc etc-20250916.tar hello.txt
[root@server ~ 11:43:22]# rm etc-20240726.tar
rm:是否删除普通文件 "etc-20240726.tar"?yes
[root@server ~ 11:43:52]# ls
anaconda-ks.cfg etc etc-20250916.tar etc.tar hello.txt
tar 包压缩管理
tar 命令支持多种压缩方法:
- gzip:-z, --gzip 文件名通常以.tar.gz结尾。最快,最老,使用最广泛。
- bzip2:-j, --bzip2 文件名通常以.tar.bz2结尾。压缩后比gzip小,没gzip使用广泛。
- xz:-J, --xz 文件名通常以.tar.xz结尾。比较新,更好的压缩比。
压缩的效果取决于被压缩的对象,例如已经压缩的图片或者rpm包,压缩效果不明显。
# 确保相关压缩工具已经安装了
[root@server ~ 13:42:20]# yum install -y gzip bzip2 xz# gzip压缩
[root@server ~ 13:49:25]# time tar -czf etc.tar.gz /etc
tar: 从成员名中删除开头的“/”real 0m1.218s
user 0m0.973s
sys 0m0.198s
# bzip2 压缩
[root@server ~ 13:50:01]# time tar -cjf etc.tar.bz2 /etc
tar: 从成员名中删除开头的“/”real 0m2.415s
user 0m2.377s
sys 0m0.027s
# xz 压缩
[root@server ~ 13:50:20]# time tar -cJf etc.tar.xz /etc
tar: 从成员名中删除开头的“/”real 0m11.709s
user 0m10.772s
sys 0m0.902s
# 查看压缩的 tar
[root@server ~ 13:50:46]# ls -lh etc.tar.*
-rw-r--r-- 1 root root 8.8M 9月 16 13:50 etc.tar.bz2
-rw-r--r-- 1 root root 10M 9月 16 13:49 etc.tar.gz
-rw-r--r-- 1 root root 7.2M 9月 16 13:50 etc.tar.xz
-rw-r–r-- 1 root root 8.8M 9月 16 13:50 etc.tar.bz2
-rw-r–r-- 1 root root 10M 9月 16 13:49 etc.tar.gz
-rw-r–r-- 1 root root 7.2M 9月 16 13:50 etc.tar.xz