一、备份前的准备工作
/etc/(系统与服务配置文件)、/root/(root用户家目录)、/var/spool/mail/(系统邮件队列)、/var/log/(系统日志,可选);/home/(用户家目录)、/var/spool/cron/(用户计划任务)、/var/www/html/(Web站点数据,如适用);/var/lib/mysql/(MySQL数据库文件)、/var/lib/pgsql/(PostgreSQL数据库)、/opt/application/(自定义应用)、/usr/local/(本地安装软件)。二、常用备份工具与方法
.gz)、bzip2(.bz2)等压缩格式。
tar -czvf backup_$(date +%Y%m%d).tar.gz /path/to/directory(打包并压缩/path/to/directory,文件名包含日期);find命令查找新增文件,再打包。例如:find /home -newer /backup/last_backup.timestamp -type f | tar -czvf incremental_$(date +%Y%m%d).tar.gz -T -(备份/home下比last_backup.timestamp新的文件),随后执行touch /backup/last_backup.timestamp更新时间戳。rsync -avz /source/directory/ /destination/directory/(-a归档模式、-v显示详情、-z压缩传输);rsync -avz -e ssh /local/dir user@remote_host:/remote/dir(通过SSH加密传输)。dd if=/dev/sda1 of=/path/to/backup.img bs=4M(if输入文件/分区、of输出文件、bs块大小,提高速度);dd if=/path/to/backup.img of=/dev/sda1 bs=4M(需确保目标分区大小不小于镜像文件)。-level参数指定,0为完全备份,1为第一次增量备份,依次递增)。
dump -0uj -f /root/boot.bak.bz2 /boot/(-0完全备份、-u记录备份时间到/etc/dumpdates、-j用bzip2压缩);dump -1uj -f /root/boot.bak1.bz2 /boot/(备份/boot分区自上次完全备份后的变化);restore -rf /root/boot.bak.bz2(-r恢复模式、-f指定备份文件)。三、定时自动备份(避免人为遗忘)
通过cron定时任务实现自动备份,无需手动执行。步骤如下:
/path/to/backup_script.sh,内容如下(备份/home目录到/backup,文件名包含日期):#!/bin/bash
BACKUP_DIR="/backup"
SOURCE_DIR="/home"
BACKUP_FILE="$BACKUP_DIR/home_$(date +%Y%m%d).tar.gz"
tar -czf "$BACKUP_FILE" "$SOURCE_DIR" 2>> "$BACKUP_DIR/backup_error.log"
chmod +x /path/to/backup_script.sh。crontab -e,添加以下内容(每天凌晨2点执行备份):0 2 * * * /path/to/backup_script.sh
保存退出后,cron会自动加载任务,按时执行备份。四、数据库备份(针对数据库应用) 对于MySQL、PostgreSQL等数据库,需使用专用工具备份数据,确保数据一致性。
mysqldump命令导出数据库为SQL文件(可恢复到其他MySQL实例):mysqldump -u username -p database_name > /backup/database_name_$(date +%Y%m%d).sql
(-u用户名、-p密码(执行后会提示输入)、database_name数据库名);恢复时使用:mysql -u username -p database_name < /backup/database_name.sql。pg_dump命令,用法类似MySQL:pg_dump -U username -d database_name > /backup/database_name_$(date +%Y%m%d).sql
恢复时使用:psql -U username -d database_name < /backup/database_name.sql。五、备份注意事项
gpg -c /backup/home.tar.gz(生成加密文件home.tar.gz.gpg)。