# 备份的常用命令 ## 前言 linux服务器经常需要备份数据。下面介绍一些常用的备份命令。 在介绍常用命令之前,先介绍一下备份的基本要点。 首先讲一个备份原则:3-2-1原则,即三份数据,两种存储介质,一份异地网络。 其次会讲一下文件备份的常用命令。 最后讲一下数据库备份的常用命令。 ## 备份原则 这里只讲3-2-1原则,即三份数据,两种存储介质,一份异地网络。 1. 要保持至少三份数据备份,包括一份原始数据和两份备份副本。这可以有效防止因硬件故障、数据损坏或人为错误导致数据丢失。 2. 原始数据。不多概述。但要求原始数据的服务器要做RAID阵列或其他高可用方案,以防止单点故障。 3. 第一份备份:存储在同一台服务器的不同硬盘(或RAID阵列)、外接硬盘、U盘等其他存储介质上。这可以防止硬盘损坏或服务器故障导致数据丢失,同时也能提高数据恢复的速度。 4. 第二份备份:存储在异地、云存储服务上,例如在另一个机房的服务器上。原则上有距离要求,至少超过100公里,这可以防止因地震、火灾或其他自然灾害导致数据丢失。 ## 文件备份的常用命令 ### rsync rsync是一个开源的远程数据同步工具,可以用来同步本地文件和目录到远程主机。 ### rclone rclone是一个开源的跨平台命令行工具,可以用来同步本地文件和目录到远程云存储服务。 ### borg borg是一个开源的备份工具,可以用来备份文件系统、数据库、磁盘等。它使用了一种叫“增量式备份”的方法,只备份文件或目录的变化,而不是完整的备份。 ### 其他常用命令 - tar:用来打包、压缩文件。 - cp:用来复制文件。 - scp:用来远程拷贝文件。 ## 数据库备份的常用命令 ### postgres postgres提供了pg_dump命令用来备份数据库。 - pg_dump:用来备份数据库。 - pg_dumpall:用来备份所有数据库。 - pg_restore:用来恢复数据库。 ### mysql mysql提供了mysqldump命令用来备份数据库。 - mysqldump:用来备份数据库。 - mysqldumpall:用来备份所有数据库。 - mysql:用来恢复数据库 `mysql -u root -p database_name < backup_file.sql`。 ### oracle 这个太专业,需要有database管理员的帮助。 ## 备份周期 备份分为全量备份和增量备份。 ### 全量备份 全量备份是指备份整个数据库或文件系统。全量备份的周期一般为每周或每月一次。 ### 增量备份 增量备份是指备份数据库或文件系统的变化,只备份新增、修改或删除的数据。增量备份的周期一般为每天或每小时一次。 ## 举例 1. 全量备份文件系统: - rsync -avz /data/ /backup/data/ - rclone copy /data remote:backup/data - borg create /backup/data::`date +%Y-%m-%d-%H%M%S` /data 2. 全量备份数据库: - mysqldump -u root -p database_name > backup_file.sql - pg_dumpall > backup_file.sql 3. 增量备份文件系统: - rsync -avz --delete /data/ /backup/data/ - rclone copy /data remote:backup/data - borg create /backup/data::`date +%Y-%m-%d-%H%M%S` /data 4. 增量备份数据库: - mysqldump -u root -p database_name --no-data > backup_file.sql - pg_dump -U postgres -f backup_file.sql -b -t table_name -n schema_name -