在Linux云服务器的日常运维中,数据备份是防范数据丢失的核心手段,tar命令作为系统原生支持的归档工具,不需要额外安装依赖,就能完成文件和目录的打包、压缩、备份全流程,适配绝大多数Linux发行版的使用场景。

tar命令基础参数说明
tar命令的参数组合较多,备份场景下常用的参数如下:
- -c:创建新的归档文件
- -x:从归档文件中提取文件
- -v:显示归档过程的详细信息
- -f:指定归档文件的名称,该参数必须放在所有参数的最后
- -z:使用gzip压缩归档文件
- -j:使用bzip2压缩归档文件
- -J:使用xz压缩归档文件
- -p:保留文件的原始权限和属性
- -g:指定增量备份的快照文件,用于记录文件变更状态
全量备份操作步骤
全量备份是指备份指定目录下的所有文件,适合首次备份或者数据变更频率较低的场景,以下示例备份/var/www/html目录到/backup路径下。
1. 创建备份目录
首先确保备份存储目录存在,避免命令执行失败:
# 创建备份目录,如果目录已存在不会报错 mkdir -p /backup
2. 执行全量备份命令
使用gzip压缩备份文件,同时保留文件原始权限:
# 备份/var/www/html目录,生成压缩归档文件 tar -czvp -f /backup/web_backup_$(date +%Y%m%d).tar.gz /var/www/html
命令中$(date +%Y%m%d)会自动替换为当前日期,方便区分不同日期的备份文件。
3. 校验备份文件完整性
备份完成后可以校验归档文件是否损坏:
# 校验备份文件,不提取文件只检查完整性 tar -tzvf /backup/web_backup_20240520.tar.gz
增量备份操作步骤
增量备份只备份距离上一次备份后发生变更的文件,能大幅减少备份时间和存储空间占用,适合数据频繁变更的场景。
1. 首次增量备份(基础备份)
先执行一次全量备份作为增量备份的基础,同时生成快照文件:
# 首次备份,生成快照文件记录文件状态 tar -czvp -g /backup/snapshot.file -f /backup/incr_backup_1.tar.gz /var/www/html
2. 后续增量备份
后续备份时继续使用同一个快照文件,tar会自动识别变更的文件:
# 第二次增量备份,只备份变更文件 tar -czvp -g /backup/snapshot.file -f /backup/incr_backup_2.tar.gz /var/www/html
3. 增量备份恢复
恢复时需要按照备份的顺序依次提取归档文件:
# 先恢复全量备份 tar -xzvp -f /backup/incr_backup_1.tar.gz -C / # 再恢复第一次增量备份 tar -xzvp -f /backup/incr_backup_2.tar.gz -C /
备份文件存储建议
备份文件生成后,建议不要只存储在云服务器本地,避免服务器磁盘故障导致备份文件也丢失:
- 可以将备份文件同步到对象存储服务,比如通过
ossutil或者s3cmd工具上传 - 也可以同步到其他云服务器的备份目录,实现异地存储
- 定期清理过期的备份文件,避免占用过多磁盘空间,比如只保留最近30天的备份
注意事项
- 备份系统关键目录比如
/etc、/home时,建议使用root用户执行命令,避免权限不足导致文件备份不全 - 备份前可以暂时停止对应服务的写入操作,比如备份数据库文件时先暂停数据库写入,避免备份的文件存在数据不一致问题
- 如果备份文件路径包含空格,需要在路径外加上英文单引号,比如
tar -czvf backup.tar.gz '/path/with space' - 恢复备份前建议先在测试环境验证备份文件的可恢复性,避免紧急恢复时才发现备份文件损坏