You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何以Synology NAS DSM作为SSH客户端定时拉取远程Linux服务器数据至本地?

如何以Synology NAS DSM作为SSH客户端定时拉取远程Linux服务器数据至本地?

嗨,我来一步步帮你搞定这个需求,其实流程并不复杂,咱们按顺序来:

1. 在Synology上生成SSH免密登录密钥对

首先得让Synology能不用密码就登录到远程Ubuntu服务器,这样定时任务才能自动运行:

  • 打开Synology DSM的「控制面板」→「终端机和SNMP」,勾选「启用SSH服务」,默认端口22就行,点击「应用」保存。
  • 用你本地电脑的终端(Mac/Linux直接用自带终端,Windows可以用Putty或PowerShell)连接到Synology的SSH,命令是:ssh admin@你的Synology_IP地址,输入DSM管理员密码登录。
  • 登录后生成安全的ed25519密钥对,执行命令:ssh-keygen -t ed25519,全程按回车就行不要设置密钥密码(不然定时任务会卡在输密码环节)。生成的密钥会存在~/.ssh目录下,其中id_ed25519是私钥,id_ed25519.pub是公钥。

2. 将公钥上传到远程Ubuntu服务器

这一步是让远程服务器信任Synology的连接:

  • 最简单的方法是用ssh-copy-id命令,在Synology的SSH终端里执行:
    ssh-copy-id -i ~/.ssh/id_ed25519.pub 远程服务器用户名@远程服务器IP
    
    比如你的远程Ubuntu用户是ubuntu,IP是192.168.1.100,那命令就是ssh-copy-id -i ~/.ssh/id_ed25519.pub ubuntu@192.168.1.100,输入远程服务器的用户密码即可完成公钥上传。
  • 如果ssh-copy-id命令无法使用,就手动操作:
    1. 在Synology终端执行cat ~/.ssh/id_ed25519.pub,复制输出的全部内容。
    2. 登录远程Ubuntu服务器,编辑~/.ssh/authorized_keys文件,把刚才复制的公钥内容粘贴进去并保存。
    3. 执行以下命令确保权限正确(SSH对权限要求很严,权限不对会拒绝连接):
      chmod 700 ~/.ssh
      chmod 600 ~/.ssh/authorized_keys
      

3. 测试SSH连接和rsync同步命令

先验证免密登录是否成功:在Synology终端执行ssh 远程服务器用户名@远程服务器IP,如果能直接登录到Ubuntu服务器,说明密钥配置没问题。

接下来测试rsync同步命令,比如你要把远程Ubuntu的/var/www/html目录同步到Synology的/volume1/backup/server_data目录,命令如下:

rsync -avz --delete 远程服务器用户名@远程服务器IP:/var/www/html/ /volume1/backup/server_data/

参数解释:

  • -a:归档模式,保留文件的权限、时间戳、所有者等所有属性
  • -v:显示同步的详细过程,方便排查问题
  • -z:传输时压缩数据,节省带宽
  • --delete:删除Synology本地存在但远程服务器没有的文件,保持两地数据完全一致(如果不需要这个同步规则,可以去掉此参数)

建议先加--dry-run参数做模拟测试,确认命令没问题再实际执行:

rsync -avz --delete --dry-run 远程服务器用户名@远程服务器IP:/var/www/html/ /volume1/backup/server_data/

如果模拟输出正常,去掉--dry-run执行一次,检查Synology的目标目录是否成功同步到远程数据。

4. 在Synology DSM设置定时自动任务

最后一步把同步命令做成定时任务:

  • 打开DSM的「控制面板」→「任务计划」,点击「创建」→「触发的任务」→「用户定义的脚本」。
  • 常规设置:给任务起个名字(比如「同步远程服务器数据」),用户选择root(避免权限不足导致同步失败)。
  • 触发设置:根据你的需求设置执行频率,比如每天凌晨2点、每周日凌晨1点等,调整好时间后保存。
  • 任务设置:在「用户定义的脚本」框里粘贴测试好的rsync命令,为了方便排查问题,建议把同步日志保存到文件,比如:
    # 先确保日志目录存在,第一次运行可以手动创建:mkdir -p /volume1/backup/rsync_logs
    rsync -avz --delete ubuntu@192.168.1.100:/var/www/html/ /volume1/backup/server_data/ >> /volume1/backup/rsync_logs/backup_$(date +%Y%m%d).log 2>&1
    
    这样每天的同步日志会以日期命名,存到/volume1/backup/rsync_logs目录下。
  • 点击「确定」完成任务创建,你也可以右键任务选择「立即运行」,测试定时任务是否能正常执行。

备注:内容来源于stack exchange,提问作者Dr. Gianluigi Zane Zanettini

火山引擎 最新活动