78 lines
3.4 KiB
Markdown
78 lines
3.4 KiB
Markdown
# 备份的常用命令
|
||
|
||
|
||
## 前言
|
||
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
|
||
-
|