CodeGym /课程 /Docker SELF /使用 rsync 和 scp 备份

使用 rsync 和 scp 备份

Docker SELF
第 6 级 , 课程 5
可用

使用 rsyncscp 备份

1. 为什么备份很重要?

今天我们聊聊一个对所有从事IT和编程工作的人来说都非常重要的任务——数据备份。如果你曾经因为磁盘故障或错误而丢失了重要数据,那么你就明白这有多重要。如果没丢过,那我们在这就是为了让你避免这种情况!

想象一下:你为一个项目努力了几个月,然后某一天,你的硬盘决定罢工。没错,这感觉就像忘了在SQL查询的末尾加分号一样沮丧,但严重一千倍。系统不可靠,人会犯错,文件会丢失。备份让我们提前为这些难以预料的麻烦做好准备。

在Linux中,有几个非常强大的数据备份工具。今天我们会学习其中的两个:rsyncscp


2. 命令 rsync: 快速且智能的数据复制工具

rsync 是最流行的数据复制和同步工具之一。它的主要优势是快速和高效。不是每次复制所有内容,rsync 只复制已更改的文件。这使得它成为定期备份大量数据的理想选择。

rsync 的语法

以下是命令的基本格式:

rsync [选项] 来源 目标

其中:

  • 来源 — 您要复制的文件或文件夹路径。
  • 目标 — 数据的目标地址。

主要选项及其功能

以下是几个常用选项:

  • -a (archive): 包括复制所有元数据(权限、时间戳等)。
  • -v (verbose): 启用详细输出,方便查看过程。
  • --progress: 显示复制进度(非常适合复制大文件)。
  • --delete: 删除目标端不在来源端的文件。有助于完全同步。
  • -z (compress): 在传输前压缩数据,提高速度(尤其是涉及网络操作时)。

示例:本地数据复制

创建存储备份的目录 /backup

mkdir /backup

将目录 /home 的所有内容复制到 /backup

rsync -av /home /backup

来看下这个例子:

  • -a 维护文件的结构和访问权限。
  • -v 显示过程信息。

如果您再次运行命令,它将只复制已更改或新增的文件。

示例:远程备份

假设您想将备份发送到远程服务器。为此,rsync 支持 SSH 的使用。

rsync -av /backup user@remote_server:/remote_backup

其中:

  • user — 远程服务器的用户名。
  • remote_server — 远程服务器的地址(例如,IP 地址或域名)。
  • /remote_backup — 服务器上您要保存数据的路径。

如果您有用于认证的 SSH 密钥,传输将更简单(也更加安全)。


3. 命令 scp:简单又高效

scp (Secure Copy Protocol) 是一个用于在本地和远程机器之间复制文件的工具。它比 rsync 更简单,适用于不需要完全同步的情况。

scp 的语法

以下是命令的基本格式:

scp [选项] 源 目标

其中:

  • — 要复制的文件路径。
  • 目标 — 文件要传输的地址。

主要选项及其功能

一些实用的选项:

  • -r: 递归复制文件夹。
  • -C: 传输前压缩文件。
  • -P: 如果 SSH 端口不是默认的 22,则指定端口。

示例:将文件复制到远程机器

你想把文件从本地电脑传输到服务器。假设文件名为 document.txt

scp document.txt user@remote_server:/remote_folder

如果文件位于文件夹 /home/user/documents 中,命令会像这样:

scp /home/user/documents/document.txt user@remote_server:/remote_folder

现在,这个文件会出现在远程机器的 /remote_folder 文件夹中。

示例:将文件从服务器复制到本地机器

这个过程是反过来的:

scp user@remote_server:/remote_folder/document.txt /home/user/documents

这样,document.txt 文件会出现在你的本地文件夹中。


4. rsyncscp 之间的区别

虽然这两个命令都能用于复制文件,但它们各自有自己的特点。

特点 rsync scp
速度 仅传输修改过的数据,适合大数据量,更快 即使文件未修改,也会全部复制
同步功能 完全支持同步 不支持同步
数据压缩 支持 -z 支持 -C
易用性 配置较复杂 界面简单

总结一下,如果只是快速传输文件,那就用 scp。但如果需要定期同步或者处理大数据量,那肯定是用 rsync


5. 实际示例:配置备份

这是一个实践任务:你想配置一个完整的备份流程,把你的项目备份到远程服务器。

  1. 假设你的项目文件保存在文件夹 /home/user/project 中。你希望它们被备份到服务器 backup.server.com 的文件夹 /backups/project 中。

  2. 为了更快地复制,我们将使用 rsync

配置备份脚本

创建文件 backup.sh

#!/bin/bash

SOURCE="/home/user/project"
DESTINATION="user@backup.server.com:/backups/project"

# 使用 rsync 进行备份
rsync -av --delete "$SOURCE" "$DESTINATION"

# 输出完成消息
echo "备份完成!"

将文件设为可执行:

chmod +x backup.sh

现在你可以手动运行这个脚本:

./backup.sh

或者将其添加到 cron 中以实现自动执行(我们会在课程的后面部分讨论 cron)。


6. 常见错误以及如何避免

  1. 命令行中的路径错误。 如果指定了错误的文件路径,rsyncscp 什么都不会复制。使用 lspwd 命令检查路径是否正确。

  2. 缺少认证密钥。 如果使用 SSH 时没有设置密钥,每次都会要求输入密码。设置SSH 密钥,让这个过程更简单。

  3. 备份中断。 如果网络不稳定,rsync 在下次启动时仍会继续传输。但 scp 就需要重新开始了。

使用 rsyncscp,你可以自信地在本地电脑和远程服务器之间复制和同步数据。这些工具是你保护重要文件的可靠帮手。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION