OpenWrt定时备份服务器
安装 &配置 OpenSSH
默认 OpenWrt 软件源中包含 OpenSSH,可以通过以下命令安装:
1 |
|
如果需要客户端工具(例如 ssh 和 ssh-keygen),可以额外安装:
1 |
|
安装完成后,需要对 OpenSSH 进行初步配置。
1 |
|
关键配置选项:
1 |
|
如果是首次安装 OpenSSH,需要生成主机密钥:
1 |
|
启动OpenSSH并设置为开机自启:
1 |
|
1 |
|
重要‼️ :在执行完ssh-keygen -A
后,会在~/ssh
目录下生成公私钥对,将公钥复制到要目标机器(备份谁,谁是目标机器)的~/.ssh/authorized_keys
内。(安全考虑,后续的脚本里登陆是密钥登陆,所以未配置密码)
安装&配置rsync
rsync 是一个高效的文件同步工具,支持增量传输,可以通过 SSH 拉取远程文件夹。
Linux/macOS:通常已预装。
Windows:可以通过 WSL进行安装
【注意】
为了防止因为版本的问题导致无法同步,建议使用
apt update
(ubuntu Linux)或者opkg update
(Openwrt)进行软件源头的更新。Mac建议使用
HomeBrew
进行安装和维护,Mac自己带的rsync不要删除,在~/.zshrc
或者~/.profie
中进行替换系统指令即可,配置如下:
1 |
|
~/.zshrc
文件中追加:
1 |
|
1 |
|
创建 rsync 拉取脚本
创建一个脚本文件,比如 sync_data.sh
:
1 |
|
• -a:归档模式,保留权限和时间戳。
• -v:显示详细信息。
• -z:压缩传输。
• –delete:同步时删除本地多余的文件(可选,根据需求使用)。
• –progress:显示传输进度。
赋予执行权限:
1 |
|
在终端运行脚本,确保可以成功同步:
1 |
|
如果一切正常,本地文件夹会被拉取并更新。
crontab配置
crontab 是 Linux 和 Unix 系统中用于管理和定时执行任务的工具。它的核心功能是让系统按照指定的时间计划自动运行任务脚本或命令。通过 crontab,可以实现自动化操作,如备份文件、定期清理日志、定时同步数据等。
这里我们用crontab做定时任务,定期去备份目标机器的数据。
- 设置定时任务,你需要编辑 crontab 文件。每个用户都有自己的 crontab 文件,使用 crontab 命令来编辑它:
1 |
|
这将打开当前用户的 crontab 配置文件。如果是第一次使用,系统会让你选择一个编辑器(例如 nano、vi 等)。
- 在 crontab 文件中,你可以添加一行来指定任务的执行时间和要执行的脚本。
1 |
|
- 完成编辑后,保存文件并退出编辑器。
- 使用以下命令查看当前用户的 crontab 任务
1 |
|
总结
以上配置就可以,进行定期对远程服务器进行增量拉取同步
- OpenSSH:密码/密钥远程登陆
- rsync:增量同步
- crontab : cron表达式定期执行rsync脚本
题外话
在 OpenWrt 上设置 Samba(SMB 文件共享),可以实现局域网文件共享功能。以下是具体步骤:
- 登录到 OpenWrt 的 SSH 终端。
- 更新软件包列表,安装 Samba:
1 |
|
- 创建被共享的目录,如果有忽略
- 为共享目录设置适当的权限:
1 |
|
- 配置Samba 服务,这里有两种方式:一种是界面,一种是命令行,这里采用命令行,界面的配置方式Google上有很多。
1 |
|
在文件中追加以下内容:
1 |
|
• option name:共享名,smb访问的路径后缀
• option path:共享目录路径。
• option guest_ok:设置为 yes 允许匿名访问,因为是局域网访问,我就设置成可以匿名访问,如果是公网,建议新建系统用户进行授权登陆(详细看附加功能)
- 保存并退出,启动Samba服务,设置开机自启动
1 |
|
- 在客户端访问共享
- Windows:打开文件资源管理器,输入地址:\\
\share(例如:\\192.168.1.1\share)。 - Mac/Linux: 打开文件管理器,选择 连接到服务器,输入地址:smb://
/share。
- Windows:打开文件资源管理器,输入地址:\\
**附加功能(可选)
如果不想让共享文件夹允许匿名访问,可以设置密码保护:
- 为用户设置 Samba 密码
1 |
|
- 为samba用户设置目录
/srv/samba/share
的共享权限 (按需配置)
1 |
|
- 编辑 Samba 配置文件
/etc/samba/smb.conf
:
1 |
|
- 重启Samba服务
1 |
|
- 测试连接,参看上文
附加调试
1 |
|